C++ 在类(C+;+;)中创建静态变量

C++ 在类(C+;+;)中创建静态变量,c++,class,static-members,C++,Class,Static Members,所以我是一个编程高手,我不确定为什么我不能在我的课堂上创建一个静态变量?我从课堂上得到了一个问题,我不确定我是否走对了。 问题是:创建一个具有静态成员项的类,以便在创建新对象时 创建时,可以报告类的对象总数 这是我目前的代码: #include <iostream> class ObjectCount { public: ObjectCount(); void reportObjectNo(); private: static int objectNo =

所以我是一个编程高手,我不确定为什么我不能在我的课堂上创建一个静态变量?我从课堂上得到了一个问题,我不确定我是否走对了。 问题是:创建一个具有静态成员项的类,以便在创建新对象时 创建时,可以报告类的对象总数

这是我目前的代码:

#include <iostream>

class ObjectCount
{
public:
    ObjectCount();
    void reportObjectNo();

private:
    static int objectNo = 0;

};


ObjectCount::ObjectCount()
{
    objectNo++;
}

void ObjectCount::reportObjectNo()
{
    std::cout << "Number of object created for class ObjectCount: " << objectNo << std::endl;
}

int main()
{
    ObjectCount firstObject;
    firstObject.reportObjectNo();

    ObjectCount secondObject;
    secondObject.reportObjectNo();

    ObjectCount thirdObject;
    thirdObject.reportObjectNo();
    return 0;
}

如果已经有人问过,我真诚地道歉,但是我找不到任何对我有帮助的东西,如果有链接,我将不胜感激:)

错误消息告诉您不能从类内部初始化非
常量
成员。这意味着您需要更改代码,使其看起来更像:

class ObjectCount
{
public:
    ObjectCount();
    void reportObjectNo();

private:
    static int objectNo;

};

int ObjectCount::objectNo = 0;

C++允许您在类主体中仅声明和定义静态常量整数类型

class Foo
{
    static const int xyz = 1;

};
非常量静态成员变量必须在类中声明,然后在类外部定义。您可以在实现文件ie.cpp中定义它

int ObjectCount::objectNo = 0;
而且,正确的使用方法是

ObjectCount::objectNo++;
因为,objectNo与类关联,而不与任何对象关联。

可能与
ObjectCount::objectNo++;