Lor*_*one 1 c++ constructor const
码:
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) { }
};
Run Code Online (Sandbox Code Playgroud)
错误是:类'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) { }
};
Run Code Online (Sandbox Code Playgroud)