结构继承和初始化基类
struct inherit and initialize with base class
得到以下场景:
struct BaseInfo
{
std::string name;
};
struct AddInfo : public BaseInfo
{
std::string name2;
}
我想初始化AddInfo with a BaseInfo
对象。
std::vector<BaseInfo> base; // objects already inserted
std::vector<AddInfo> add(base);// <-- failed
AddInfo::name2
应该取消初始化,有一个简单的方法做到这一点吗?BaseInfo可以有很多成员,我不想写一个复制构造:-/
std::vector<BaseInfo>
和std::vector<AddInfo>
是不相关的类型,因此您不能从另一个复制构造。可以使用两个迭代器构造函数从
std::vector<AddInfo> add(base.begin(), base.end());
这将从base. But that assumes an
AddInfo can be constructed from a
BaseInfo '中的每个BaseInfo
对象在add
中构造一个AddInfo
对象,换句话说,这必须是可能的:
BaseInfo b;
AddInfo a(b);
你可以通过给AddInfo
一个合适的构造函数来实现这一点:
AddInfo(const BaseInfo& base) : BaseInfo(base) { }
相关文章:
- C++类 - 初始化列表 - 递归 - 按值传递
- 何时为派生类初始化 vptr?
- 虚拟基类初始化
- 类初始化中的静态 lambda
- 如何防止在基类初始化器中调用默认构造函数?
- 如何在派生类中存储基类初始化期间获得的信息
- 是否可以在基类初始化器列表中传递成员对象
- 多重继承、复制构造函数和基类初始化
- 是否将类初始化的常量成员传递给基构造函数
- C++是否要求您从其派生类初始化基类成员
- 如何使用运行时选择基 CTOR 初始化不可复制的基类
- 继承和复制构造函数-如何从基类初始化私有字段
- 在使用虚拟继承时,我可以避免重复的基类初始化吗
- 基类初始化器和成员变量初始化器的顺序重要吗
- 在初始化列表中基类初始化之前调用函数
- 虚拟基类初始化
- 尽管类名与C++完全匹配,但模板基类初始化构造函数失败
- 初始化派生类初始化器列表中的基类成员
- 了解基类初始化
- 关于派生类初始化中的基类