[英]Can I insert an object by value (copying) from one std::vector to another?
(我意识到这是程序中的复制粘贴错误。但是,为什么我得到该错误消息的原因可能仍然对其他人感兴趣,因此,我更新了这个问题。)
我有以下代码片段,它将一个向量的元素复制到另一个向量。 也许可以更优雅地解决这个问题,但这不是这里的问题(当然,除非这绝对是我要做的事情是愚蠢的。)
void DomainClass::addMembers(vector<DomainMember*>& d){
for(int i = 0; i < d.size(); i ++){
this->domains.push_back(d[i]);
}
}
向量this->domains
是具有以下定义的成员:
vector<Domain*> domains;
编译器告诉我:错误:
reference to type 'const value_type' (aka 'Domain *const') could not bind to an lvalue of type 'value_type' (aka 'DomainMember *')
当我想通过引用来处理对象时,我基本上理解了问题,但是在那种情况下,我想将d
BY VALUE的元素插入domains
。 我怎么能告诉编译器他应该只是复制而不是传递引用?
该错误告诉您的是,您尝试将DomainMember*
类型的对象(在d
)放入Domain*
类的对象(在domains
)。 编译器不知道如何从DomainMember
为Domain
。
问题不在于副本,而在于domains
的类型应该是vector<DomainMember*>
(或者d
应该是vector<Domain*>
,您的调用),这样push_back
才能起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.