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