std::vector 在代码拆分后引用要推送的对象失败
std::vector fails referencing the object to push in after code splitting
>编辑:aList在我的代码版本中被引用为指针,但在我仍然有相同问题的当前版本中没有。
在尝试将其拆分为接口文件和实现文件之前,我让这段代码完美运行。但是当我拆分它时,编译器告诉我我正在使用不正确的参数调用 push_back()。所以我知道它不能引用我正在推动它的对象的类型,尽管它是相同的(afaik,当然:D)。
#ifndef _MYHEADER_HPP_
#define _MYHEADER_HPP_
class A{
public:
std::string someString;
};
class B{
public:
std::vector<A> aList;
public:
void addA();
};
#endif /* _MYHEADER_HPP_ */
//implementation file
#include <string>
#include <vector>
#include "myheader.hpp"
void B::addA(){
A a;
a.someString = "Hola";
// Here compiler says : Invalid arguments 'Candidates are: void push_back(const A &)' line 18 Semantic Error
aList.push_back(a);
}
AFAIK,std::vector 总是做一个要推送的对象的副本,并且该副本被存储到向量中,所以我认为这不是堆栈分配"a"的问题,对吗?
我做错了什么?谢谢。
好的,经过 3 个多小时的寻找问题的根源,我发现 Eclipse CDT IDE 有一个关于我的代码的损坏缓存文件。因此,从命令行编译一切正常,我必须删除该缓存文件,然后 Eclipse 没有报告任何错误。
相关文章:
- 自定义对象的dlib序列化在gcc中失败
- CMake + Qt,moc 编译失败,无法实现 QMetaObject 方法(编译器找不到基本 ui 对象的标头?
- std::list::merge() 对于包含对象的列表失败
- 断言"IsObject()"在通过 Boost ASIO 发送对象时失败
- 使用方法失败更改constexpr对象成员
- C 如何停止对象构建失败的执行
- 使用GDI+删除位图和CLSID对象时,C++内存管理失败
- 为什么在 std::transform 中使用函数对象参数失败并且需要 lambda 表达式
- C++中的即时对象初始化失败,出现LNK2005错误
- 为什么为我的对象类编译标准优先级队列失败
- C++动态转换失败/子对象被视为父对象
- 创建对象时调试断言失败
- C++全局对象初始化失败——为什么?以及是否可以将对象放入.DATA部分
- 对象的c++数组,初始化失败
- 如果插槽对象包含互斥锁和条件变量,则 Boost signals2 connect() 调用编译失败
- std::vector 在代码拆分后引用要推送的对象失败
- 删除 [] 在 Linux 中放置新对象失败
- 由于未知原因,在void函数中创建(大)对象失败
- 四叉树更新对象失败
- 为什么打印对象失败并显示"no match for 'operator<<'"错误?