无法初始化私有 const 成员
Unable to initialize private const member
我想要一个与我的 class 关联的 int
,它是在 class 的用户实例化它时设置的。
class MyClass {
public:
MyClass(int x);
private:
const int x;
};
为了初始化这个常量,我尝试使用构造器(Java 风格):
MyClass::MyClass(int x) {
this->x = x;
}
但是,我的编译器不太喜欢这种方式,我得到以下信息:
const.cxx: In constructor ‘MyClass::MyClass(int)’:
const.cxx:3:1: error: uninitialized const member in ‘const int’ [-fpermissive]
MyClass::MyClass(int x) {
^
In file included from const.cxx:1:0:
const.h:8:13: note: ‘const int MyClass::x’ should be initialized
const int x;
^
const.cxx:4:11: error: assignment of read-only member ‘MyClass::x’
this->x = x;
^
根据构造函数初始化实例化常量的 C++ 方法是什么 Java?
编辑:我看到问题被标记为重复;该线程未能提及您可以在初始化列表中使用构造函数的参数,因为它在所有示例中仅使用数字文字。
您可以在构造函数的函数签名中使用所谓的初始化列表:
MyClass::MyClass(int x) : x(x) {
}
我想要一个与我的 class 关联的 int
,它是在 class 的用户实例化它时设置的。
class MyClass {
public:
MyClass(int x);
private:
const int x;
};
为了初始化这个常量,我尝试使用构造器(Java 风格):
MyClass::MyClass(int x) {
this->x = x;
}
但是,我的编译器不太喜欢这种方式,我得到以下信息:
const.cxx: In constructor ‘MyClass::MyClass(int)’:
const.cxx:3:1: error: uninitialized const member in ‘const int’ [-fpermissive]
MyClass::MyClass(int x) {
^
In file included from const.cxx:1:0:
const.h:8:13: note: ‘const int MyClass::x’ should be initialized
const int x;
^
const.cxx:4:11: error: assignment of read-only member ‘MyClass::x’
this->x = x;
^
根据构造函数初始化实例化常量的 C++ 方法是什么 Java?
编辑:我看到问题被标记为重复;该线程未能提及您可以在初始化列表中使用构造函数的参数,因为它在所有示例中仅使用数字文字。
您可以在构造函数的函数签名中使用所谓的初始化列表:
MyClass::MyClass(int x) : x(x) {
}