Upozornění kompilátoru C4355
"toto: v inicializačním seznam základní člen
Tohoto ukazatel je platná pouze v rámci funkce nestatickému členu.Nelze použít v inicializačním seznam základní třídy.
Před volána konstruktory základní třídy a konstruktory tříd členské tuto konstruktoru.Ve skutečnosti jste byl předán ukazatel objektu unconstructed do jiného konstruktoru.Pokud tyto jiné konstruktory přístup všech členů nebo volat členské funkce na to, výsledek bude definován.Byste neměli používat tohoto ukazatel myši, dokud všechny stavby byla dokončena.
Toto upozornění je vypnuto ve výchozím nastavení.Další informace naleznete v tématu Upozornění kompilátoru, která jsou ve výchozím natavení vypnuta..
Následující ukázka generuje upozornění C4355:
// C4355.cpp
// compile with: /w14355 /c
#include <tchar.h>
class CDerived;
class CBase {
public:
CBase(CDerived *derived): m_pDerived(derived) {};
~CBase();
virtual void function() = 0;
CDerived * m_pDerived;
};
class CDerived : public CBase {
public:
CDerived() : CBase(this) {}; // C4355 "this" used in derived c'tor
virtual void function() {};
};
CBase::~CBase() {
m_pDerived -> function();
}
int main() {
CDerived myDerived;
}