정적 개체 필드 할당에 대한 "해결되지 않은 외부 기호" 오류 이해
코드를 작성할 때 다른 클래스의 정적 개체 필드에 값을 추가합니다. 그러나 이러한 할당을 시도하면 "확인되지 않은 외부 기호"라는 메시지와 함께 연결 오류가 발생할 수 있습니다.
간단한 코드 예제를 고려해보세요.
<code class="cpp">class A { public: A() {} }; class B { public: static A* a; }; int main() { B::a = new A; }</code>
이 코드를 컴파일하려고 하면 다음과 같은 결과가 발생합니다. 오류:
error LNK2001: unresolved external symbol "public: static class A * B::a" (?a@B@@2PAVA@@A)
이 오류는 정적 개체 필드가 클래스 선언에 암시적으로 정의되어 있지 않기 때문에 발생합니다. C 참조 표준에 따르면 "클래스 정의 내의 정적 데이터 멤버 선언은 정의가 아니며 불완전한 유형일 수 있습니다."
정적 개체 필드 정의 규칙
이 오류를 해결하려면 클래스 정의 외부에 정적 개체 필드를 명시적으로 정의해야 합니다. 이 규칙은 접근성이나 변경 가능성에 관계없이 모든 정적 개체 필드에 적용됩니다.
정의 예:
<code class="cpp">A* B::a = nullptr;</code>
외곽 네임스페이스 범위에 정의를 배치하면 다음이 보장됩니다. 링커는 main()에서 할당을 해결하려고 시도할 때 기호를 찾을 수 있습니다.
위 내용은 정적 개체 필드에 할당할 때 \'해결되지 않은 외부 기호\' 오류를 해결하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!