std::vector 在代码拆分后引用要推送的对象失败

std::vector fails referencing the object to push in after code splitting

本文关键字:对象 失败 vector 代码 拆分 std 引用      更新时间:2023-10-16

>编辑: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 没有报告任何错误。