Gültigkeit von "this"
-
Hallo!
Leider ist mir kein besserer Titel eingefallen, deshalb erst mal der code:
template <class AbgeleitetT> class basis { protected: basis () { t_ = static_cast<AbgeleitetT*> (this); } // <---- 1) public: static void fstatic () { t_->f (); } private: static AbgeleitetT *t_; }; class abgeleitet : public basis<abgeleitet> { public: void f () { .... } }; int main () { abgeleitet a; a::fstatic (); return 0; }
Meine Frage ist, ob die statische Membervariable t_ nach Bildung einer Instanz von "abgeleitet" gültig ist.
Danke,
BF
-
Ist schon gültig.
Zeigt immer auf das letzte erzeugte Objekt.
-
kartoffelsack schrieb:
Zeigt immer auf das letzte erzeugte Objekt.
nich immer
-
Hallo,
der Code ist ok solange du t_ nicht im Ctor von basis dereferenzierst. Denn zu diesem Zeitpunkt ist this noch kein AbgeleitetT* (der Base-Ctor wird vor dem Ctor der abgeleiteten Klasse aufgerufen).
-
Danke für Euere Hilfe!
BF