从子类设置const成员值
set const member value from subclass
代码:
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"没有任何名为"constrongome_write_one_flag"的字段。我认为这是因为在B
的构造函数中,创建的对象还不是A
类型,因为A
的"继承切片"还没有初始化。
我已经尝试了几种变通方法,但都没有成功,在这里我将省略它们。有没有办法实现我想要做的事情?
在其初始值设定项列表中,B
只能初始化其自己的数据成员、直接基类和任何虚拟基类。CCD_ 5不是这些;它是CCD_ 6的数据成员。它只能由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) { }
};
以下内容几乎实现了您想要做的。它确实创建了一个受保护的a成员,但任何其他选择从a继承的类都可以使用该成员。你可以更具保护性,让B成为a的朋友,然后让接受参数的构造函数私有化。
class A{
public:
const bool const_some_write_once_flag;
A(): const_some_write_once_flag(false) { }
protected:
A( const bool initialValue ): const_some_write_once_flag( initialValue ) {}
};
class B: public A{
public:
B(): A(true) { }
};
相关文章:
- 在运算符重载定义中使用成员函数(const错误)
- 如何在声明为 const 的方法中更改类成员
- 如何定义一个没有重复代码的继承的 const 类成员函数?
- 为什么我不能在返回 const 的布尔函数中为类成员变量赋值?C++
- 在类 (C++) 之外设置 const int 成员变量
- 不允许运算符 const 参数调用 const 成员函数
- 在 C++ 中声明 const 对象需要用户定义的默认构造函数.如果我有一个可变成员变量,为什么不呢?
- 有人可以用"显式运算符 const GUID_t&() const"来解释成员函数的函数吗?
- 无法使用类型 'const char *' 的左值初始化类型 'char *' 的成员子对象
- 在 C++ 中通过引用传递类成员时,Const 不起作用
- 我们可以有一个 setter 成员函数作为从 const 对象引用的 const 吗?
- 静态数据成员:它"const declaration / constexpr definition"起作用?
- 使用 const char* 初始化 const ref 字符串成员时幕后会发生什么
- c++ 是否保证标头初始化的静态 const 成员跨编译单元和库共享单个实例?
- 声明与 const 变量和成员函数相同的标识符
- 有效地初始化 const std::vector 类成员
- 为什么我可以调用一个从const方法更改成员的方法
- 成员函数的"this"参数具有"const"类型,但我的函数实际上不是"const"
- 在C++中,从构造函数中将字符串文本分配给成员const char*变量时会发生什么
- 在类声明中初始化 const 成员变量时在调试模式下出现异常