Udostępnij za pośrednictwem


Ostrzeżenie kompilatora (poziom 4) C4435

'klasa1': Układ obiektu pod /vd2 zmieni się ze względu na wirtualną klasę podstawową 'klasa2'

To ostrzeżenie jest domyślnie wyłączone. Aby uzyskać więcej informacji, zobacz Ostrzeżenia kompilatora, które są domyślnie wyłączone.

W domyślnej opcji kompilacji /vd1 klasa pochodna nie ma vtordisp pola dla wskazanej bazy wirtualnej. Jeśli /vd2 lub #pragma vtordisp(2) jest w mocy, vtordisp pole będzie obecne, zmieniając układ obiektu. Może to prowadzić do problemów ze zgodnością binarną w przypadku kompilowania modułów z różnymi vtordisp ustawieniami.

Przykład

Poniższy przykład generuje kod C4435.

// C4435.cpp
// compile with: /c /W4
#pragma warning(default : 4435)
class A
{
public:
    virtual ~A() {}
};

class B : public virtual A  // C4435
{};

Zobacz też

vtordisp
/vd (Wyłącz przemieszczanie konstrukcji)