【发布时间】:2010-12-08 14:56:20
【问题描述】:
我有一个问题,如果我有一个模板类,而该模板类又具有一个模板方法,该模板方法接受该类的另一个实例的参数(具有不同的模板参数),它无法访问受保护的或私有的成员类作为参数传递,例如:
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
【问题讨论】: