我可以按值(复制)从一个 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
中)放入 class Domain*
类型的对象(在 domains
).编译器不知道如何从 DomainMember
转换为 Domain
.
问题不在于副本,而在于 domains
的类型应该是 vector<DomainMember*>
(或者 d
应该是 vector<Domain*>
,你的电话)让你的 push_back
工作。
(我意识到这是我程序中的一个复制粘贴错误。但是,为什么我得到那个错误消息的原因对其他人来说仍然很有趣,因此,我更新了这个问题。)
我有以下代码片段,它将一个向量的元素复制到另一个向量中。也许这可以更优雅地解决,但这不应该是这里的问题(当然,除非我正在尝试做的事情绝对愚蠢。)
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
中)放入 class Domain*
类型的对象(在 domains
).编译器不知道如何从 DomainMember
转换为 Domain
.
问题不在于副本,而在于 domains
的类型应该是 vector<DomainMember*>
(或者 d
应该是 vector<Domain*>
,你的电话)让你的 push_back
工作。