2017-06-23 72 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,但有时即使是这样。

相关问题