在 类 中创建静态变量 (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 关联,而不与任何对象关联。
所以我是编程新手,我不确定为什么我无法在 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 关联,而不与任何对象关联。