[英]error: no match for 'operator=' . Trying to inherit from base class and initialize from base class?
[英]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.