Freigeben über


Compilerwarnung C5243

"type": Die Verwendung unvollständiger Klassen "class-name" kann aufgrund der ABI-Einschränkung zu einer ODR-Verletzung führen. Sie können das Problem umgehen, indem Sie das Vererbungswort für die Vorwärtsdeklaration der Klasse angeben.

Hinweise

Die Microsoft C++-ABI verwendet mehrere Arten von Pointer-to-Member-Funktionstypen. Diese Typen weisen unterschiedliche Größen auf, die vom von der Klasse verwendeten Vererbungsmodell abhängen. Mit dem C++-Standard können Sie eine Pointer-to-Member-Funktion eines unvollständigen Klassentyps deklarieren. Wenn Sie eine Variable des Pointer-to-Member-Funktionstyps für eine unvollständige Klasse deklarieren, muss der Compiler die allgemeinste Darstellung verwenden. Sie kann zu einer einzigen Definitionsregel oder einem ODR-Verstoß führen, da der Compiler möglicherweise eine kleinere, spezifischere Darstellung für diesen Pointer-to-Member-Funktionstyp in anderen Übersetzungseinheiten verwenden kann, in denen der vollständige Klassentyp verfügbar ist.

Um diesen Fehler zu beheben, können Sie den vollständigen Klassentyp angeben, bevor Sie die Pointer-to-Member-Funktionsvariable deklarieren. Oder verwenden Sie ein Microsoft-spezifisches Vererbungsstichwort, um das richtige Vererbungsmodell für die unvollständige Klassendeklaration anzugeben.

Compilerwarnung C5243 ist neu in Visual Studio 2019, Version 16.10 und ist standardmäßig deaktiviert. Weitere Informationen zum Aktivieren dieser Warnung finden Sie unter Compilerwarnungen, die standardmäßig deaktiviert sind.

Weitere Informationen

Vererbungsschlüsselwörter