在c ++中初始化构造函数中的静态成员变量错误

时间:2015-03-19 13:49:29

标签: c++ compiler-errors static-members

我遇到了一个问题,即我在类中定义了一个静态成员变量,其中访问说明符是私有的,但每当调用构造函数对应一个对象时,编译器都会显示错误“对MyObject :: count的未定义引用” 这是我的类成员变量声明

class MyObject
{ private:
        static int count;
  public:
      MyObject()
         {
           count=0;
          }
 };    

2 个答案:

答案 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;
}