2014-04-11 72 views
-1

我有处理静态私有变量的问题。这是我的代码。对定义的静态私有变量的未定义引用

ClassA.h:

class ClassA{ 
    static int a; 
public: 
    int getA(); 
}; 

Class.cpp:

#include "ClassA.h" 

int ClassA::a = 9001; 

int ClassA::getA(){ 
    return a; //<--- Undefined reference to ClassA::a 
} 

正如你所看到的,我在实现文件中定义的静态变量,因为它已经说了一遍又一遍,我也这样做了其他类的其他静态成员,他们工作没有任何问题,但这不是。有没有人有任何解决方案?

+0

我没有看到任何错误。按照Madsen的建议检查分号,仅此而已。 –

+0

对不起,我忘记了分号 – TimeZero

+0

这段代码没问题。在你的实际代码中必须有一些你忽略的细节。 –

回答

0

也许ClassA在声明结束时缺少;

我无法在您提供的代码中发现任何错误。也许ClassA是在命名空间内定义的?

+0

代码中的错误,它已经存在。 – TimeZero

-1

declare

int ClassA :: a;在.H本身

如下:

class ClassA{ 
    static int a; 
public: 
    int getA(); 
}; 
int ClassA::a = 9001; 

而且,你的A级声明不以分号结束。

+0

已经完成,没有获得任何结果。 – TimeZero

+0

在A类声明的末尾添加了分号? –

+0

是的,这是我的代码转储中的一个错误,它已经存在于我的电脑中的.h文件中。 – TimeZero