VC ++ C4150 (불완전한 유형에 대한 포인터 삭제)이 경고 만있는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1271307

문제

물론 경고를 처리해야하지만 VC ++ 인 이유 C4150 (불완전한 유형에 대한 포인터 삭제) 경고 만?

도움이 되었습니까?

해결책

표준은 합법적이지만 위험하지만 5.3.5

삭제되는 객체의 삭제 시점에서 불완전한 클래스 유형이없고 전체 클래스에 사소한 파괴자 또는 거래 기능이있는 경우 동작이 정의되지 않습니다.

다른 팁

선언 선언의 결과 로이 경고를받습니다. 따라서 컴파일러는 그것이 구조/클래스임을 인식했지만 파괴자의 호출에 대해서는 확실하지 않습니다.

경고 감각은 MSVC에 의한 두 번째 코드 분석과 관련이 있습니다. 후자의 클래스가 해결되면 컴파일러는 소멸자가 존재하는 경우 결정을 내릴 수 있습니다.

종종 나쁜 생각이지만 C ++에서는 합법적입니다.

대략적으로, 경고 레벨 1은 "당신은 놀랄 수도 있지만, 당신이 말한 것을 무시했다"는 유형이며, 생성 된 코드가 잘못되고 충돌하기 쉬운 몇 가지 선택한 문장.

따라서 WL 2는 합법적이며 많은 시나리오에서 불완전한 유형을 삭제하는 것이 전적으로 괜찮으므로 적절합니다.

물론, 그 추론은 단지 교육받은 추측 일뿐입니다. 아마도 Microsoft 가이 경고 수준을 할당하기 위해 주사위를 굴 렸을 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top