#include<stdio.h>
class A { public: int a;};
class B: public A {
public:
static int b;
B(){
b++;
printf("B:%d\n",b);
}
};
int main() {
A* a1 = new B[100];
A* a2 = new B();
return 0;
}
错误:
In function `main':
undefined reference to `B::b'
undefined reference to `B::b'
undefined reference to `B::b'
undefined reference to `B::b'
答案 0 :(得分:16)
需要在类外部分配静态变量。在B类之外添加这一行:
int B::b;
将静态变量视为使用extern
关键字声明。他们仍然需要在某处分配。这意味着分配永远不应该在头文件中!
答案 1 :(得分:3)
因为它是静态的,你还需要为B::b
定义存储(在类定义中,你所做的就是声明变量)。
您需要添加:
int B::b;
答案 2 :(得分:0)
您必须在相应的.cpp文件中初始化静态成员,如int B :: b = 0