我可以按值(复制)将对象从一个 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
为单位(。编译器不知道如何从DomainMember
转换为Domain
。
问题不在于副本,而在于domains
的类型应该vector<DomainMember*>
(或者d
应该是vector<Domain*>
,您的电话(才能使您的push_back
正常工作。
相关文章:
- 尝试使用 std::vector<std::thread时出现静态断言失败错误>
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- 连接和压缩标准::vector<std::字符串的最佳方法>
- C++从 std::vector<std::function<中删除 std::function>>
- 如何在构造函数初始值设定项列表中使用 n 个元素初始化 std::vector<std::time_t>
- 如何使用 CUDA 将 std::vector<std::string> 复制到 GPU 设备
- 编译错误 std::vector<std::shared_ptr<T>>迭代器和擦除方法
- 将 std::vector<std::unique_ptr<T>> 移动到 std::vector<std::shared_ptr<T>>
- 如何从 boost::container::vector<std::string>::iterator 访问索引和对象?
- 使用 std::vector<std::future<int>> 和 std::async 启动几个线程时中止
- 为什么转置这个 std::vector<std::vector<std::string> > 这么慢?
- 是否有可能在没有复制的情况下传递 std::vector<int> 作为参数来获得 std::vector<std::array<int, 3>>?
- 在 boost::<double>asio::buffer 中使用像 std::vector<std::complex> 这样的参数
- 如何从 std::initializer_list<char const* 构建 std::vector<std::string>>
- 如何检查 std::vector<std::string> 的元素是否以某个子字符串开头?
- 在 std::vector<std::vector 中重新存储内部向量<TYPE>>
- 将 std::vector<std::string> 转换为 const char* const*
- 不能将结构push_back() 转换为 std::vector<std::shared_ptr<theStruct>> theVector
- SWIG:传递一个 std::vector< std::vector <double> >指向 python 的指针
- 将 std::vector<std::p air<const K, V>*> 转换为 std::vector<std::p air<const K, V>&g