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

Can I insert an object by value (copying) from one std::vector to another?

本文关键字:vector std 插入 另一个 一个 复制 对象 我可以      更新时间:2023-10-16

(我意识到这是我程序中的复制粘贴错误。但是原因,为什么我收到确切的错误消息对其他人来说仍然很有趣,因此,我更新了这个问题。

我有以下代码片段,它将一个向量的元素复制到另一个向量中。也许这可以更优雅地解决,但这不应该是这里的问题(当然,除非我试图做的事情绝对愚蠢。

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正常工作。

相关文章: