-2
我想要有一个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;
^
什么是基于构造函数a Java初始化实例化常量的C++方法?
编辑:我看到标记为重复的问题;那个线程没有提到你可以在构造器列表中使用构造函数的参数,因为它只在所有例子中使用数字文字。
使用的[初始化器列表(http://en.cppreference.com/w/cpp/language/initializer_list): 'MyClass :: MyClass(int x):x(x){}' – Biffen
并且顺便说一下,对于非const成员也使用它... –
使用_initialization_,而不是赋值。 – emlai