错误:对class_name :: a
的未定义引用答案 0 :(得分:5)
从发布的错误中,链接器声明该变量尚未已定义,而不是未明确已初始化:
class A
{
// declaration.
static int x;
};
// definition (in this case without explicit initialisation).
int A::x;
链接器不应发出错误,并且编译器不应发出警告,只要在为static
变量分配初始值之前没有尝试使用{{1}}变量。
答案 1 :(得分:0)
静态成员实际上并不存储在任何创建的对象中,因为它在该类的所有对象之间共享。
它应该只创建一次,即使你创建了该类的许多对象。或者即使您创建了类的 no 对象。因此,您必须单独进行。
编译器警告所有类型的非正规化变量,而不仅仅是静态变量。拥有一个没有值的变量通常不是很有用,所以这些警告是好的。添加= 0
并不太难,是吗?