Condividi tramite


Avviso del compilatore C5243

'type': l'uso della classe incompleta 'class-name' può causare una violazione ODR a causa della limitazione ABI. È possibile risolvere il problema specificando la parola chiave di ereditarietà nella dichiarazione forward della classe .

Osservazioni:

Microsoft C++ ABI usa più tipi di puntatore a membro. Questi tipi hanno dimensioni diverse che dipendono dal modello di ereditarietà usato dalla classe . Lo standard C++ consente di dichiarare un puntatore a membro di un tipo di classe incompleto. Se si dichiara una variabile di tipo puntatore a membro per una classe incompleta, il compilatore deve usare la rappresentazione più generale. Può causare una regola di definizione o una violazione ODR, poiché il compilatore può usare una rappresentazione più piccola e più specifica per questo tipo di puntatore a membro in altre unità di conversione in cui è disponibile il tipo di classe completo.

Per risolvere questo errore, è possibile specificare il tipo di classe completo prima di dichiarare la variabile puntatore a membro. In alternativa, usare una parola chiave di ereditarietà specifica di Microsoft per specificare il modello di ereditarietà corretto nella dichiarazione di classe forward incompleta.

Avviso del compilatore C5243 è una novità di Visual Studio 2019 versione 16.10 e disattivata per impostazione predefinita. Per altre informazioni su come abilitare questo avviso, vedere Avvisi del compilatore disattivati per impostazione predefinita.

Vedi anche

Parole chiave di ereditarietà