>  기사  >  백엔드 개발  >  정적 개체 필드에 할당할 때 \"해결되지 않은 외부 기호\" 오류를 해결하려면 어떻게 해야 합니까?

정적 개체 필드에 할당할 때 \"해결되지 않은 외부 기호\" 오류를 해결하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-31 16:03:18717검색

How Do I Resolve the

정적 개체 필드 할당에 대한 "해결되지 않은 외부 기호" 오류 이해

코드를 작성할 때 다른 클래스의 정적 개체 필드에 값을 추가합니다. 그러나 이러한 할당을 시도하면 "확인되지 않은 외부 기호"라는 메시지와 함께 연결 오류가 발생할 수 있습니다.

간단한 코드 예제를 고려해보세요.

<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.