2017-06-23 43 views
0

我無法理解爲什麼當聲明靜態變量時會導致外部符號錯誤。誰可以描述以下情況之間的差異?定義類時無法解析的外部符號錯誤

1)行

class TrainComposition 
{ 
public: 
    int wagons; 
    ... 
} 

2)錯誤(解析外部符號)

class TrainComposition 
{ 
public: 
    static int wagons; 
    ... 
} 

3)錯誤(解析外部符號)

class TrainComposition 
{ 
static int wagons; 
public: 
    ... 
} 
+0

您應該在全局範圍初始化該靜態變量 – Asesh

+1

[靜態類成員上未解析的外部符號]的可能重複(https://stackoverflow.com/questions/195207/unresolved-external-symbol-on-static-class-成員) – Asesh

回答

0

2)和3)是當然也一樣,能見度不會改變任何問題。

你聲明瞭你的變量,但是你沒有定義它。換句話說,在你的.cpp文件,你應該添加

int TrainComposition::wagons = 0; 

這通常是沒有必要的static成員是const,但有時即使是這樣。

相關問題