Share via


Advertencia del compilador C5243

'tipo': el uso de la clase incompleta 'nombre_de_clase' puede provocar una infracción de ODR debido a la limitación de ABI. Puede solucionar el problema especificando la palabra clave de herencia en la declaración adelantada de la clase.

Comentarios

La ABI de Microsoft C++ usa más de un tipo de puntero a miembro. Estos tipos tienen tamaños diferentes que dependen del modelo de herencia que usa la clase. El estándar de C++ permite declarar un puntero a miembro de un tipo de clase incompleto. Si declara una variable de tipo de puntero a miembro para una clase incompleta, el compilador debe usar la representación más general. Puede provocar una infracción de una regla de definición o de ODR, ya que el compilador puede usar una representación más pequeña y específica para este tipo de puntero a miembro en otras unidades de traducción en las que está disponible el tipo de clase completo.

Para resolver este error, puede especificar el tipo de clase completo antes de declarar la variable de puntero a miembro. O bien use una palabra clave de herencia específica de Microsoft para especificar el modelo de herencia correcto en la declaración de clase adelantada incompleta.

La advertencia del compilador C5243 es nueva en la versión 16.10 de Visual Studio 2019 y está desactivada de forma predeterminada. Para obtener más información sobre cómo habilitar esta advertencia, consulte Advertencias del compilador desactivadas de forma predeterminada.

Consulte también

Palabras clave de herencia