2013-03-08 2 views
-3
#include <iostream> 
using namespace std; 
class base 
{ 
    static base* mybase; 
}; 
base::mybase = NULL; 
char* str = "hello world"; 
int main() 
{ 
    std::cout<<"hello world"<<std::endl; 
    return 0; 
} 

왜 코드 행 "base :: mybase = NULL"컴파일러 오류!정적 멤버 변수 지정

+0

를 사용하려면, 당신은 점점 전체 오류 메시지를 게시하시기 바랍니다. –

답변

2

유형을 지정해야합니다. mybase의 유형은 base*입니다 : 이것은 base의 회원이며 mybase이라고하며 NULL로 초기화합니다 base*을 정의

base* base::mybase = NULL; 

.

+0

나는 그 해답을 알고 있지만, 왜 그런지 모르겠다. – paul08colin

+0

@ user1965184 변수 정의이기 때문에 유형으로 시작해야합니다. 'int x = 5;와 똑같은 방법입니다. –

+0

오케이, 알 겠어! 고마워! – paul08colin

2

또한 라인에서 변수의 유형을 제공한다 :

base* base::mybase = NULL; 
0

이유 코드 base::mybase = NULL 컴파일러 오류의 라인!

유효한 선언이 아니기 때문에. 유효한 대입 표현식 (클래스 기반의 private 멤버에 액세스 할 수있는 컨텍스트에서)이지만 네임 스페이스 범위에서 표현 문을 사용할 수 없습니다.

는 정적 멤버의 정의를 제공하는 당신이 오류와 관련된 질문을 게시 할 때마다

base* base::mybase = NULL;