2013-10-19 4 views
1

I가 다음 헤더가있는 클래스라는 펍 :정적 변수와 외부 해결되지 않은

#pragma once 



class Pub 
{ 

public: 
    static double X_FACTOR; 
    static double Y_FACTOR; 
    static const int INIT_SCREEN_WIDTH=500; 
    static const int INIT_SCREEN_HEIGHT=550; 


    Pub(void); 
    ~Pub(void); 
}; 

나는 다음과 MAIN.CPP에서 변수 Y_FACTOR을 설정하려고 :

Pub::Y_FACTOR=1.0; 

을 예 Pub.h가 올바르게 포함되어 INIT_SCREEN_WIDTH 및 INIT_SCREEN_HEIGHT 에 액세스 할 수 있지만 다음과 같은 오류가 발생합니다.

Error 6 error LNK2001: unresolved external symbol "public: static double Pub::Y_FACTOR" ([email protected]@@2NA) C:\Users\Pedro-Estevan-Juarez\Documents\Visual Studio 2012\Projects\Project2\Project2\main.obj Project2 Error 7 error LNK1120: 1 unresolved externals C:\Users\Pedro-Estevan-Juarez\Documents\Visual Studio 2012\Projects\Project2\Debug\Project2.exe 1 1 Project2

나는 이것이 현명한 문법이라고 생각한다. 누군가 나를 도와 줄 수 있을까?

답변

1

클래스 정의 내의 코드는 단지 선언입니다. cpp 파일에 정적 변수의 정의를 추가해야합니다. 이것을 cpp 파일과 파일 범위에서 사용하기 전에이 파일을이 파일에 추가하십시오.

double Pub::Y_FACTOR; 
+0

그래, 효과가 있습니까? 이 일을하기에는 내게 정말 외국처럼 보입니까? – user2853108

+0

예, C++에서는 직관적이지 않습니다. C++ 표준은 이런 식으로 정의합니다. 그리고 표준이 정의로 정의한다면,이 헤더 파일이 여러 cpp에 포함되면 ODR이 발생합니다. – ZijingWu