IT TIP

정적 변수 C ++에 대한 정의되지 않은 참조

itqueen 2020. 12. 10. 21:33
반응형

정적 변수 C ++에 대한 정의되지 않은 참조


안녕하세요, 다음 코드에서 정의되지 않은 참조 오류가 발생합니다.

class Helloworld{
  public:
     static int x;
     void foo();
};
void Helloworld::foo(){
     Helloworld::x = 10;
};

나는 static foo()기능을 원하지 않는다 . static클래스의 static메서드가 아닌 클래스의 변수에 액세스하려면 어떻게 해야합니까?


나는 static foo()기능을 원하지 않는다

글쎄, 클래스에서 정적 foo()아니며 클래스의 변수에 액세스하기 위해 만들 필요 없습니다 .staticstatic

해야 할 일은 단순히 정적 멤버 변수에 대한 정의 를 제공하는 것입니다 .

class Helloworld {
  public:
     static int x;
     void foo();
};

int Helloworld::x = 0; // Or whatever is the most appropriate value
                       // for initializing x. Notice, that the
                       // initializer is not required: if absent,
                       // x will be zero-initialized.

void Helloworld::foo() {
     Helloworld::x = 10;
};

코드는 정확하지만 불완전합니다. 클래스 Helloworld에는 정적 데이터 멤버 선언x있지만 해당 데이터 멤버에 대한 정의 가 없습니다 . 필요한 소스 코드의 일부

int Helloworld::x;

또는 0이 적절한 초기 값이 아닌 경우 이니셜 라이저를 추가합니다.

참고 URL : https://stackoverflow.com/questions/16284629/undefined-reference-to-static-variable-c

반응형