我有一个问题,如果我有一个模板类,它又有一个模板方法,该类的另一个实例的类参数(具有不同的模板参数),它不能访问受保护或类的私有成员作为参数传递,例如:模板的C++类成员访问问题
template<typename T>class MyClass
{
T v;
public:
MyClass(T v):v(v){}
template<typename T2>void foo(MyClass<T2> obj)
{
std::cout << v << " ";
//error C2248: 'MyClass<T>::v' : cannot access private member declared in class 'MyClass<T>'
std::cout << obj.v << " ";
std::cout << v + obj.v << std::endl;
}
};
int main()
{
MyClass<int> x(5);
MyClass<double> y(12.3);
x.foo(y);
}
有什么方法说,在MyClass的<牛逼>方法可以完全访问MyClass的<SomeOtherT>?
欢乐合唱团! :D [15char] – GManNickG 2009-10-21 07:21:07
您的代码实际上并未在Comeau中编译,而且我无法找到Standard如何允许它。由于14.5.3/3,我认为'friend'之前的'template'是必要的。 – 2009-10-21 07:24:45
我其实也是这么做的:(我删除它,因为我认为这是没有必要的(在VS中测试后)我真的不应该用这个测试...我会重新加入它。Bah! – GManNickG 2009-10-21 07:29:07