Jeśli używam łańcuch dziedziczenia jak w poniższym przykładzie mogę używać vars z najgłębszej podstawy bez żadnych problemów:Recursive dziedziczenie z zmiennej liczbie argumentów szablonów i odziedziczonych problemów parametrów
class A { public: int x; };
class B : public A { };
class C: public B { public: void Do() { cout << x << endl; } };
Jeśli zrobić to samo z rekurencyjnej o zmiennej liczbie argumentów klasy szablonów Nie mogłem uzyskać dostępu do moich vars. Każdy pomysł, jak uzyskać dostęp do vars i dlaczego nie widziałem moich vars?
template <class ...Parms>
class Example;
template <class Head, class ...Parms>
class Example<Head, Parms...>: public Example<Parms...>
{
};
template <>
class Example<>
{
public:
int x;
};
template <class ...Parms>
class Last: public Example<Parms...>
{
void Do() { cout << x << endl; }
};
Kompilacja kończy się niepowodzeniem, zanim wystąpi instancja klasy!
OK, to-> x pracy, ale muszę powiedzieć: Nie rozumiem różnicy między dostępem do x i this-> x dla członków danych. Czy ktoś może wyjaśnić, dlaczego tak się dzieje? – Klaus
@Klaus Edytowałem odpowiedź, aby podać wyjaśnienie. – Angew