我遇到了一个问题,如果我有一个模板类,它反过来有一个模板方法,它接受该类的另一个实例的参数(具有不同的模板参数),它不能访问传递给该类的受保护或私有成员参数,例如:
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);
}
Run Code Online (Sandbox Code Playgroud)
是否有人说MyClass <T>中的方法可以完全访问MyClass <SomeOtherT>?