假设这在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

10-02 04:10