Wenn ich eine Kette von Vererbung wie das folgende Beispiel verwende ich Vars aus tiefster Basis ohne Probleme nutzen könnten:rekursive Vererbung mit variadische Vorlagen und vererbte Parameter Probleme
class A { public: int x; };
class B : public A { };
class C: public B { public: void Do() { cout << x << endl; } };
Wenn ich mit rekursiven variadische das gleiche tun Template-Klassen konnte ich nicht auf meine Vars zugreifen. Irgendeine Idee, wie man auf die Vars zugreift und warum ich meine Vars nicht sehen kann?
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; }
};
Kompilierung schlägt fehl, bevor eine Instanz der Klasse instanziiert wird!
Ok, das-> x Arbeit, aber ich muss sagen: Ich verstehe nicht den Unterschied zwischen dem Zugriff auf x und this-> x für Datenmitglieder. Kann mir jemand erklären, warum das passiert? – Klaus
@Klaus Ich habe die Antwort bearbeitet, um eine Erklärung zu geben. – Angew