c++ - 从子类设置 const 成员值

标签 c++ constructor constants

代码:

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/

相关文章:

C - 动态整数数组错误(代码 :Blocks/Visual Studio)

c++ - 为什么 std::cin.getline 没有重载方法来获取 std::string?

java - 如何定义泛型类的 JNI 方法签名?

c++ - 在自己的应用程序中插入支持 WebRTC 的 Web 框架

c++ - extern const 数组不链接

C++ 初始化静态常量结构变量

c++ - 如何为动态矩阵重载运算符 [] 以返回值!? C++

php - PHP 中的便捷构造函数

C++ - 生成子类实例的父类(super class)构造函数

javascript - this.element 在对象构造函数内部无法识别