假设这在Foo.h中:
class Foo {
private:
const int MAXIMUM;
}
如何在Foo.cpp文件中将MAXIMUM初始化为某个值(在这种情况下为100)?我试过了
Foo::Foo() {
MAXIMUM = 100;
}
并收到错误“表达式必须是可修改的左值”。然后我尝试
const int Foo::MAXIMUM = 100;
并收到错误“可能无法在其类之外定义非静态数据成员”。这基本上回答了我的问题,“这是不可能的”,但这只是意味着我的大学搞砸了头文件。那么,这有可能吗?
注意:这是大学的作业,因此无法更改头文件。我认为逻辑解决方案是在头文件中将MAXIMUM设置为100。
最佳答案
您可以通过两种方式初始化const变量
在线初始化
class Foo {
private:
const int MAXIMUM = 100;
};
使用初始化列表
class Foo {
Foo()
: MAXIMUM(100) {
}
Foo(const int MAXIMUM)
: MAXIMUM(MAXIMUM) {
}
private:
const int MAXIMUM;
}
在下面的状态
Foo::Foo() {
MAXIMUM = 100;
}
enter code here
已经创建,并且您正在尝试修改其值,这是MAXIMUM
变量不允许的。在下面的声明中
const int Foo::MAXIMUM = 100;
const
不是静态变量,因此它将与对象绑定。您不能使用类名访问MAXIMUM
。