Ostrzeżenie kompilatora C5243
"type": użycie niekompletnej klasy "class-name" może spowodować naruszenie odr z powodu ograniczenia ABI. Aby obejść ten problem, należy określić słowo kluczowe dziedziczenia w deklaracji przesyłania dalej klasy.
Uwagi
W usłudze Microsoft C++ ABI jest używany więcej niż jeden rodzaj typu wskaźnika do elementu członkowskiego. Te typy mają różne rozmiary, które zależą od modelu dziedziczenia używanego przez klasę. Standard C++ umożliwia deklarowanie wskaźnika do składowej niekompletnego typu klasy. Jeśli zadeklarowasz zmienną typu wskaźnik-składowa dla niekompletnej klasy, kompilator musi użyć najbardziej ogólnej reprezentacji. Może to prowadzić do jednej reguły definicji lub naruszenia ODR, ponieważ kompilator może używać mniejszej, bardziej szczegółowej reprezentacji tego typu wskaźnika do składowej w innych jednostkach tłumaczenia, w których dostępny jest pełny typ klasy.
Aby rozwiązać ten błąd, można określić pełny typ klasy przed zadeklarowanie zmiennej wskaźnika do składowej. Możesz też użyć słowa kluczowego dziedziczenia specyficznego dla firmy Microsoft, aby określić prawidłowy model dziedziczenia na niekompletnej deklaracji klasy przekazywania.
Ostrzeżenie kompilatora C5243 jest nowe w programie Visual Studio 2019 w wersji 16.10 i jest domyślnie wyłączone. Aby uzyskać więcej informacji na temat włączania tego ostrzeżenia, zobacz Ostrzeżenia kompilatora, które są domyślnie wyłączone.