繁体   English   中英

结构继承并使用基类初始化

[英]struct inherit and initialize with base class

有以下情况:

struct BaseInfo
{
  std::string name;
};

struct AddInfo : public BaseInfo
{
  std::string name2;
}

我想AddInfo with a BaseInfo对象初始化AddInfo with a BaseInfo

std::vector<BaseInfo> base; // objects already inserted
std::vector<AddInfo> add(base);// <-- failed 

AddInfo::name2应该是未初始化的,有一种简单的方法吗? BaseInfo可以有很多成员,我不想写一个副本constuct:-/

std::vector<BaseInfo>std::vector<AddInfo>是不相关的类型,因此您不能从另一个复制构造。 您可以做的是使用两个迭代器构造函数从元素构造

std::vector<AddInfo> add(base.begin(), base.end());

这将从AddInfo中的每个BaseInfo对象的add构造一个AddInfo对象base. But that assumes an base. But that assumes an can be constructed from a BaseInfo` can be constructed from a AddInfo,换句话说,这必须是可能的:

BaseInfo b;
AddInfo a(b);

您可以通过为AddInfo提供合适的构造函数来实现此AddInfo

AddInfo(const BaseInfo& base) : BaseInfo(base) {  } 

请参阅此工作示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM