无法初始化私有const成员

时间:2015-10-14 11:47:25

标签: c++ constructor initialization const

我希望有一个与我的类相关联的int,当该类的用户实例化时,它会被设置。

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;
           ^

什么是基于Java构造函数初始化实例化常量的C ++方法?

编辑:我看到标记为重复的问题;该线程未提及您可以在初始化列表中使用构造函数的参数,因为它只在所有示例中使用数字文字。

1 个答案:

答案 0 :(得分:3)

您可以在构造函数的函数签名中使用所谓的初始化列表:

MyClass::MyClass(int x) : x(x) {
}