我开始学习 C++ 和 Qt,但有时我从书中粘贴的最简单的代码会导致错误。
我在带有 QtCreator IDE 的 Ubuntu 10.04 上使用 g++4.4.2
。 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;
}
我认为它与 此处 和 此处 声明的完全相同(不是吗?)。那么上面的代码有什么问题呢?
原文由 sorush-r 发布,翻译遵循 CC BY-SA 4.0 许可协议
您已经很好地声明了静态成员,但没有在任何地方 定义 它们。
基本上你所说的“存在一些静态成员”,但永远不要为它留出一些内存,你需要:
在课堂之外的某个地方,而 不是 在 main 里面。