2013-03-08 124 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

每當您發佈涉及錯誤疑問,請您收到完整的錯誤消息。 – 2013-03-08 12:44:02

回答

2

您也需要提供該類型。的類型的mybasebase*

base* base::mybase = NULL; 

這定義了base*即是base一個構件,並且被稱爲mybase並將其初始化爲NULL

+0

我知道答案,但我不知道爲什麼? – paul08colin 2013-03-08 12:45:35

+0

@ user1965184因爲它是一個變量定義 - 它必須以一個類型開頭。就像'int x = 5;'一樣。 – 2013-03-08 12:50:44

+0

好的,我明白了!謝謝! – paul08colin 2013-03-08 12:56:35

2

你也應該給變量的類型在該行:

base* base::mybase = NULL; 
0

爲什麼代碼base::mybase = NULL編譯器錯誤的行!

因爲它不是有效的聲明。這將是一個有效的賦值表達式(在可以訪問類的基類的私有成員的上下文中),但是不能在命名空間範圍內具有表達式語句。

提供的靜態成員的定義,使用

base* base::mybase = NULL;