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) {
}