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

Creating static variables in classes (C++)

所以我是编程新手,我不确定为什么我无法在 class 中创建静态变量?我从 class 那里收到了一个问题,但我不确定我的处理方式是否正确。 问题是:创建一个带有静态成员项的 class 以便每当有新对象时 创建后,可以报告class的对象总数。

到目前为止,这是我的代码:

#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;
}

我得到的错误是:

ISO C++ forbids in-class initialization of non-const static member 'objectNo'
line 9

如果有人问过这个问题,我深表歉意,但我找不到任何对我有帮助的东西,如果有 link 将不胜感激:)

错误消息告诉您无法从 class 中 初始化 const static 成员。这意味着您需要将代码更改为更像:

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

private:
    static int objectNo;

};

int ObjectCount::objectNo = 0;

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

class Foo
{
    static const int xyz = 1;

};

非 const 静态成员变量必须在 class 中声明,然后在 it.you 之外定义,在实现文件中定义它,即 .cpp

int ObjectCount::objectNo = 0;

此外,正确的使用方法是

ObjectCount::objectNo++;

因为 objectNo 与 class 关联,而不与任何对象关联。