c++ - 从基础创建派生结构

标签 c++

我有一个来自包含许多数据字段的库的 POD 结构:

struct A {
    int foo1;
    float foo2;
    ...
};

现在我想扩展它以添加一些自定义数据并想到:

struct B : public A {
    int bar1;
    bool bar2;
};

A 实例创建 B 实例的好方法是什么?这不起作用:

A a;
B b = a;

最佳答案

(编辑:删除了添加构造函数 B(A const &) 的建议,OP 的更新建议不应修改给定的结构。)

您可以创建一个B,然后使用编译器生成的A::operator=(A&):

A a = { whatever };
B b = { whatever };
static_cast<A &>(b) = a;

关于c++ - 从基础创建派生结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23112267/

相关文章:

c++ - 为什么内存没有被释放?

c++ - std::map::size() 不同于迭代器

c++ - std::function typedef 中的参数名称

c++ - 从 QFontDatabase::addApplicationFont 获取字体系列名称

c++ - 当 QSortFilterProxyModel 过滤 QTreeView 中的项目时,如何自动展开该项目?

c++ - 如何使用 C/C++ 在 Linux 中通过提供进程 ID 来获取父进程 ID?

c++ - YUV420 到 RGB 的转换没有给出相同的图像?

c++ - 什么时候适合使用虚方法?

C++ - 获取派生类型作为模板参数

c++ - 重载函数名称查找