Mam problem, że jeśli mam klasę szablonu, która z kolei ma metodę szablonu, która pobiera parametr innej instancji klasy (z różnymi argumentami szablonu), to nie może dostęp chroniony lub prywatnych członkowie klasy przekazany jako parametr, np:C++ Problem z dostępem członków klasy z szablonami
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);
}
Czy istnieje jakiś sposób, aby powiedzieć, że metody MojaKlasa <T> mieć pełny dostęp do MojaKlasa <SomeOtherT>?
Glee! : D [15char] – GManNickG
Twój kod właściwie nie kompiluje się w Comeau i nie mogę znaleźć sposobu, w jaki pozwala na to Standard. Wierzę, że 'szablon' przed' przyjacielem' jest konieczny z powodu 14.5.3/3. –
Właściwie to też miałem :(usunąłem go, ponieważ uważałem, że to niepotrzebne. (Po testowaniu w VS) nie powinienem tego testować ... Dodam go ponownie. Bah! – GManNickG