template <class T >
class MyClass {
private:
T value;
public:
MyClass(T value_ = T()):value(value_){cout<<"from Constructor value = "<<value<<endl;}
template <class X>
void assign(const MyClass<X>& x) { // x must have same type as *this
value = x.value;
}
T getValue()const
{
return value;
}
};
int main( int argc, char ** argv )
{
MyClass<int> T1, T3;
MyClass<double> T2;
T1.assign(T3); //нет ошибки
T1.assign(T2); //error C2248: 'MyClass<T>::value' : cannot access private member declared in class 'MyClass<T>'
return 0;
}
кто нибудь может пояснить почему во втором случае ошибка?