我遇到了一个问题,即我在类中定义了一个静态成员变量,其中访问说明符是私有的,但每当调用构造函数对应一个对象时,编译器都会显示错误“对MyObject :: count的未定义引用” 这是我的类成员变量声明
class MyObject
{ private:
static int count;
public:
MyObject()
{
count=0;
}
};
答案 0 :(得分:4)
您必须明确定义count
,因为没有count
的定义。您刚刚声明了静态变量,您还没有定义它。
class MyObject
{ private:
static int count;
MyObject()
{
count=0;
}
};
int MyObject::count = 0; //Explicit definition of static variables.
答案 1 :(得分:0)
//This is just declaration of class
class Foo
{
};
//This is definition of class
Foo obj;
当您使用行static int count;
编译代码时,编译器将找不到静态变量的定义。所以它会给你一个错误的“MyObject :: count'”的未定义引用。
解决方案:
class MyObject
{
private:
static int count;
public:
MyObject()
{
count=0;
}
};
int MyObject::count=0;
int main()
{
MyObject obj;
return 0;
}