我开始学习C++和QT,但有时我从一本书中粘贴的最简单的代码会导致错误。
我在用g++4.4.2
在Ubuntu 10.04上使用QtCreatorIDE。g++编译器语法和其他编译器之间有什么区别吗?例如,当我试图访问静态成员时,总会出现问题。
#include <iostream>
using namespace std;
class A
{
public:
static int x;
static int getX() {return x;}
};
int main()
{
int A::x = 100; // error: invalid use of qualified-name 'A::x'
cout<<A::getX(); // error: : undefined reference to 'A::x'
return 0;
}
那么上面的代码有什么问题呢?
静态数据成员
静态数据成员在其类定义中的声明不是定义,并且可能是cv限定的无效以外的不完整类型。静态数据成员的定义应出现在包含成员类定义的命名空间范围中.在命名空间范围的定义中,静态数据成员的名称应使用
::
operator