Share via


Upozornění kompilátoru C5243

'type': použití neúplné třídy 'class-name' může způsobit porušení odr kvůli omezení ABI. Tento problém můžete obejít zadáním klíčového slova dědičnosti v předávací deklaraci třídy.

Poznámky

Microsoft C++ ABI používá více než jeden typ ukazatele na člena. Tyto typy mají různé velikosti, které závisí na modelu dědičnosti používaném třídou. Standard C++ umožňuje deklarovat ukazatel na člen neúplného typu třídy. Pokud deklarujete proměnnou typu pointer-to-member pro neúplnou třídu, kompilátor musí použít nejobecnější reprezentaci. Může vést k jednomu pravidlu definice nebo porušení pravidla ODR, protože kompilátor může použít menší, konkrétnější reprezentaci pro tento typ ukazatele na člena v jiných jednotkách překladu, kde je k dispozici úplný typ třídy.

Chcete-li tuto chybu vyřešit, můžete před deklarovat proměnnou ukazatele na člena zadat úplný typ třídy. Nebo použijte klíčové slovo dědičnosti specifické pro Microsoft k určení správného modelu dědičnosti u neúplné deklarace předávací třídy.

Upozornění kompilátoru C5243 je v sadě Visual Studio 2019 verze 16.10 nové a ve výchozím nastavení je vypnuté. Další informace o povolení tohoto upozornění najdete v tématu Upozornění kompilátoru, která jsou ve výchozím nastavení vypnutá.

Viz také

Klíčová slova dědičnosti