İngilizce dilinde oku

Aracılığıyla paylaş


Derleyici Uyarısı C4355

'this': temel üyesi başlatıcısı listesinde kullanılan

Bu içinde yalnızca başvuramaz üye işlevleri geçerli işaretçi. İçin temel sınıf Başlatıcısı listesinde kullanılamaz.

Önce temel sınıf Kurucularını ve sınıf üyesi yapıcılar denilen Bu kurucusu. Gerçekte, unconstructed nesneye başka bir yapıcı bir işaretçi geçirildi. Diğer Kurucular erişmek herhangi bir üye veya üye arama işlevleri bu sonucu tanımsız olacaktır. Değil kullanması gereken Bu tüm inşaat tamamlanıncaya kadar işaretçiyi.

Bu uyarı varsayılan olarak etkin değildir. Daha fazla bilgi için bkz. Varsayılan olarak kapalıdır derleyici uyarısı.

Aşağıdaki örnek C4355 oluşturur:

// 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;
}