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


Предупреждение компилятора C5243

Type: использование неполного класса "class-name" может привести к нарушению ODR из-за ограничения ABI. Чтобы устранить проблему, укажите ключевое слово наследования в объявлении пересылки класса.

Замечания

ABI Microsoft C++ использует несколько типов указателей на член. Эти типы имеют разные размеры, зависящие от модели наследования, используемой классом. Стандарт C++ позволяет объявить указатель на член неполного типа класса. Если вы объявляете переменную типа указателя на член для неполного класса, компилятор должен использовать наиболее общее представление. Это может привести к одному правилу определения или нарушению ODR, так как компилятор может использовать меньшее, более конкретное представление для этого типа указателя на член в других единицах перевода, где доступен полный тип класса.

Чтобы устранить эту ошибку, можно указать полный тип класса перед объявлением переменной указателя на член. Кроме того, используйте ключевое слово наследования, определенное корпорацией Майкрософт, чтобы указать правильную модель наследования в объявлении неполного класса пересылки.

Предупреждение компилятора C5243 является новым в Visual Studio 2019 версии 16.10 и по умолчанию отключено. Дополнительные сведения о включении этого предупреждения см . в предупреждениях компилятора, отключенных по умолчанию.

См. также

Ключевые слова наследования