Share via


컴파일러 경고 C5243

'type': 불완전한 클래스 'class-name'을(를) 사용하면 ABI 제한 사항으로 인해 ODR 위반이 발생할 수 있습니다. 클래스의 전방 선언에 상속 키워드를 지정하여 문제를 해결할 수 있습니다.

설명

Microsoft C++ ABI는 여러 형식의 멤버 포인터 형식을 사용합니다. 이러한 형식은 클래스에서 사용하는 상속 모델에 따라 크기가 다릅니다. C++ 표준을 사용하면 불완전한 클래스 형식의 멤버에 대한 포인터를 선언할 수 있습니다. 불완전한 클래스에 대해 멤버 포인터 형식의 변수를 선언하는 경우 컴파일러는 가장 일반적인 표현을 사용해야 합니다. 이는 컴파일러가 전체 클래스 형식을 사용할 수 있는 다른 변환 단위에서 이 멤버 포인터 형식에 대해 더 작고 더 구체적인 표현을 사용할 수 있으므로 하나의 정의 규칙 또는 ODR 위반으로 이어질 수 있습니다.

이 오류를 해결하려면 멤버 포인터 변수를 선언하기 전에 전체 클래스 형식을 지정하면 됩니다. 또는 Microsoft 전용 상속 키워드를 사용하여 불완전한 전달 클래스 선언에 올바른 상속 모델을 지정합니다.

컴파일러 경고 C5243은 Visual Studio 2019 버전 16.10의 새로운 기능이며 기본적으로 꺼져 있습니다. 이 경고를 사용하도록 설정하는 방법에 대한 자세한 내용은 기본적으로 꺼져 있는 컴파일러 경고를 참조하세요.

참고 항목

상속 키워드