C++ 无法初始化私有常量成员
我想让一个C++ 无法初始化私有常量成员,c++,constructor,initialization,constants,C++,Constructor,Initialization,Constants,我想让一个int与我的类相关联,这个类的用户实例化它时设置它 class MyClass { public: MyClass(int x); private: const int x; }; 要初始化此常量,我尝试使用构造函数(Java样式): 但是,我的编译器不太喜欢这种方式,我得到以下结果: const.cxx: In constructor ‘MyClass::MyClass(int)’: const.cxx:3:1: error: uninitialized const mem
int
与我的类相关联,这个类的用户实例化它时设置它
class MyClass {
public:
MyClass(int x);
private:
const int x;
};
要初始化此常量,我尝试使用构造函数(Java样式):
但是,我的编译器不太喜欢这种方式,我得到以下结果:
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++方法,基于Lajava?
编辑:我看到问题标记为重复;该线程没有提到您可以在初始值设定项列表中使用构造函数的参数,因为它在所有示例中只使用数字文本。您可以在构造函数的函数签名中使用所谓的初始值设定项列表:
MyClass::MyClass(int x) : x(x) {
}
使用:
MyClass::MyClass(int x):x(x){}
并且顺便说一句,对非常量成员也使用该函数…使用初始化,而不是赋值。这不是问题的重复。另一个问题是关于初始化类声明中的const int
,而这是关于传递一个参数来初始化它。
MyClass::MyClass(int x) : x(x) {
}