代码:
struct A{
const bool const_some_write_once_flag;
A(): const_some_write_once_flag(false) { }
};
struct B: public A{
B(): const_some_write_once_flag(true) { }
};
错误是:类“B”没有任何名为“const_some_write_once_flag”的字段。我相信这是因为在 B
的构造函数中, 正在创建的对象还不是 A
类型,因为 A
的“继承切片”尚未初始化。
我已经尝试了几种解决方法,但都没有成功,我将在这里省略它们。有没有办法实现我想要做的事情?
最佳答案
在它的初始化列表中,B
只能初始化它自己的数据成员、它的直接基类和任何虚基类。 const_some_write_once_flag
不是这些;它是 A
的数据成员。它只能由 A
的构造函数初始化。
struct A{
const bool const_some_write_once_flag;
A(): const_some_write_once_flag(false) { }
protected:
A(bool flag) : const_some_write_once_flag(flag) { }
};
struct B: public A{
B(): A(true) { }
};
关于c++ - 从子类设置 const 成员值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9999952/