在类 (C++) 之外设置 const int 成员变量

Set const int member variable outside the class (C++)

本文关键字:const int 成员 变量 设置 外设 C++ 在类      更新时间:2023-10-16

假设这是在Foo.h中:

class Foo {
private:
const int MAXIMUM;
}

如何将 MAX 初始化为 Foo.cpp 文件中的某个值(在本例中为 100(?我试过了

Foo::Foo() {
MAXIMUM = 100;
}

并得到错误"表达式必须是可修改的左值"。然后我试了

const int Foo::MAXIMUM = 100;

并得到错误"非静态数据成员不能在其类之外定义"。这基本上回答了我的问题,因为"这是不可能的",但这只是意味着我的大学在头文件上搞砸了。那么,这可能吗?

注意:这是大学作业,所以我无法更改头文件。我假设合乎逻辑的解决方案是在头文件中将 MAX 设置为 100。

您可以通过两种方式初始化 const 变量

在线初始化

class Foo {
private:
const int MAXIMUM = 100;
};

使用初始化列表

class Foo {
Foo() 
: MAXIMUM(100) {
}
Foo(const int MAXIMUM) 
: MAXIMUM(MAXIMUM) {
}
private:
const int MAXIMUM;
}

在下面的统计数据enter code here

Foo::Foo() {
MAXIMUM = 100;
}

MAXIMUM已创建,并且您正在尝试修改其值,这是const变量不允许的。

在下面的声明中

const int Foo::MAXIMUM = 100;

MAXIMUM不是静态变量,因此它将与对象绑定。不能使用类名访问MAXIMUM

您需要一个初始值设定项列表

Foo::Foo() : MAXIMUM(100)
{
}

在创建类对象之前,需要初始化">Const"和"Reference"变量。在您的情况下,

Foo::Foo() {            // **End of this line, object is getting created.**
MAXIMUM = 100;      // *This line, gets Error: "expression must be a modifiable lvalue"*
}

为了避免这种情况,您必须使用"初始化列表",其中在类构造函数创建对象之前将值分配给变量。

修复

Foo::Foo():MAXIMUM(100) {    // const variable is initialized 
MAXIMUM = 200;    
}