繁体   English   中英

我可以通过值(复制)从一个std :: vector插入对象到另一个吗?

[英]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 )。 编译器不知道如何从DomainMemberDomain

问题不在于副本,而在于domains的类型应该是vector<DomainMember*> (或者d应该是vector<Domain*> ,您的调用),这样push_back才能起作用。

暂无
暂无

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

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