Поделиться через


Предупреждение компилятора (уровень 4, выключен) C4435

"derived_class": макет объекта в разделе /vd2 изменится из-за виртуальной базы "base_class"

Замечания

Это предупреждение отключено по умолчанию. Дополнительные сведения см. в разделе Compiler Warnings That Are Off by Default.

По умолчанию, при опции компиляции /vd1, производный класс не имеет поля vtordisp для указанной виртуальной базы. Если /vd2 или #pragma vtordisp(2) активен, присутствует поле vtordisp, которое изменяет макет объекта. Это различие может привести к проблемам совместимости двоичных файлов, если взаимодействующие модули компилируются с разными vtordisp параметрами.

Пример

В следующем примере создается C4435.

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

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

См. также

vtordisp
/vd (Отключение перемещений конструкций)