std :: vector在代码拆分后无法引用要推入的对象

Adr*_*rez 0 c++ std stdvector

编辑:在我的代码版本中,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);
}
Run Code Online (Sandbox Code Playgroud)

AFAIK,std :: vector总是执行要推送的对象的副本,并且该副本存储到向量中,所以我认为这不是"a"被分配的问题,我是对的吗?

我做错了什么?谢谢.

Adr*_*rez 5

好的,经过3个多小时寻找问题的根源后,我发现Eclipse CDT IDE有一个关于我的代码的损坏的缓存文件.所以,从命令行编译一切都很好,我不得不删除该缓存文件,然后Eclipse报告没有错误.