编译器警告 C5243

type”:使用不完整的类“class-name”可能会导致由于 ABI 限制而引发的 ODR 冲突。 可以通过在类的向前声明上指定继承关键字来解决此问题。

注解

Microsoft C++ ABI 使用多种指针到成员类型。 这些类型具有不同的大小,具体取决于类使用的继承模型。 C++ 标准允许声明不完整类类型的指向成员的指针。 如果声明不完整类的指向成员的指针的变量,编译器必须使用最通用的表示形式。 这可能会导致单个定义规则或 ODR 冲突,因为编译器可以在提供完整类类型的其他转换单元中使用指向成员的指针类型的较小、更具体的表示形式。

若要解决此错误,可以在声明指向成员的指针变量之前指定完整的类类型。 或者,使用特定于 Microsoft 的继承关键字在不完整向前类声明中指定正确的继承模型。

编译器警告 C5243 是 Visual Studio 2019 版本 16.10 中的新增功能,默认情况下处于关闭状态。 有关如何启用此警告的详细信息,请参阅默认情况下关闭的编译器警告

另请参阅

继承关键字