Möchte von einer Template Klasse ableiten. Beim Kompillieren habe ich aber immer das Problem, dass die abgeleitete Klasse nicht auf die Methoden oder Variablen der Elternklasse zugreifen kann. Folgende Fehlermeldung erhalte ich:
Code:
test.cc: In member function »void B<T>::go()«: test.cc:16: Fehler: »v« wurde in diesem Gültigkeitsbereich nicht definiert
Ein auf das wesentliche beschränktes Beispiel:
C++:
#include <iostream> template<class T> class A { public: T v; A(){} virtual ~A(){} };
template<class T> class B : public A<T> { public: B(): A<T>() {} void go(){v=2.5;} };
Das Problem hatte ich auch schon mit dem GCC (Cygwin). Habe ich auch nicht verstanden. Bei mir half ein explizites "this->v" . -- Reden ist Schweigen und Silber ist Gold.
Jetzt tut's. Aber so ist das doch nicht gedacht, oder? Das muesste doch eigentlich auch ohne "this" funktionieren. (Uebrigens tut es das auch bei GCC 3.x.x)
bin gespannt auf Eure Antworten, kokos
P.S.: Bin von Eurer Professionalitaet und Schnelligkeit begeistert, hab da schon ganz andere Sachen in diversen Foren erlebt.
Tja, ich weiß es leider auch nicht und wäre sehr dankbar, wenn jemand dazu etwas Klärendes beitragen könnte. Ich glaube, dass ich dieses Problem nur mit Templates hatte. Eigentlich ist das falsch: ein public/protected-member einer Basisklasse muss man ohne "this->" referenzieren können. -- Reden ist Schweigen und Silber ist Gold.