所以我是一个编程的菜鸟,我不确定为什么我不能在我的班级中创建一个静态变量?我从课堂上得到了一个问题,我不确定我是否会以正确的方式进行。 问题是:创建一个带有静态成员项的类,以便每当有新对象时 创建后,可以报告该类的对象总数。
到目前为止,这是我的代码:
#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
如果已经有人问我,我真诚地道歉,但是我找不到任何有帮助的东西,如果有链接将不胜感激:)
答案 0 :(得分:2)
错误消息告诉您,您无法从类中初始化非const
static
成员。这意味着您需要更改代码以使其更像:
class ObjectCount
{
public:
ObjectCount();
void reportObjectNo();
private:
static int objectNo;
};
int ObjectCount::objectNo = 0;
答案 1 :(得分:0)
C ++允许您在类体中声明和定义静态const整数类型。
class Foo
{
static const int xyz = 1;
};
非常量静态成员变量必须在类中声明,然后在其外部定义。您在实现文件中定义它,即.cpp
int ObjectCount::objectNo = 0;
此外,使用它的正确方法是
ObjectCount::objectNo++;
因为,objectNo与类相关联,而不与任何对象相关联。