Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ std::vector在代码拆分后引用要推入的对象失败_C++_Std_Stdvector - Fatal编程技术网

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

C++ std::vector在代码拆分后引用要推入的对象失败,c++,std,stdvector,C++,Std,Stdvector,编辑:在我的代码的这个版本中,列表被引用为指针,但在我的当前版本中,它没有被引用,因为我的当前版本仍然存在相同的问题 在尝试将其拆分为接口文件和实现文件之前,我已经让这段代码正常工作了。但是当我拆分它时,编译器告诉我调用push_back()的参数不正确。所以我理解它不能引用我推它的对象的类型,尽管它是相同的(当然是D) \ifndef\u MYHEADER\u水电站_ #定义\u MYHEADER\u水电站_ 甲级{ 公众: std::string someString; }; B类{ 公众:

编辑:在我的代码的这个版本中,列表被引用为指针,但在我的当前版本中,它没有被引用,因为我的当前版本仍然存在相同的问题

在尝试将其拆分为接口文件和实现文件之前,我已经让这段代码正常工作了。但是当我拆分它时,编译器告诉我调用push_back()的参数不正确。所以我理解它不能引用我推它的对象的类型,尽管它是相同的(当然是D)

\ifndef\u MYHEADER\u水电站_
#定义\u MYHEADER\u水电站_
甲级{
公众:
std::string someString;
};
B类{
公众:
std::向量表;
公众:
void addA();
};
#endif/*\u MYHEADER\u HPP\u*/
//实现文件
#包括
#包括
#包括“myheader.hpp”
void B::addA(){
A A;
a、 someString=“Hola”;
//这里编译器说:无效参数“候选参数是:void push_back(const A&)”,第18行语义错误
a.推回(a);
}
AFAIK,std::vector总是做一个要推送的对象的副本,并且该副本被存储到向量中,所以我认为这不是堆栈分配的问题,对吗

我做错了什么?
谢谢。

好的,在查找问题根源3个多小时后,我发现Eclipse CDT IDE中有一个关于我的代码的损坏缓存文件。因此,从命令行编译一切正常,我必须删除该缓存文件,然后Eclipse报告没有错误。

好的,在查找问题根源3个多小时后,我发现Eclipse CDT IDE有一个关于我的代码的损坏缓存文件。因此,从命令行编译一切正常,我必须删除缓存文件,然后Eclipse报告没有错误。

那些引用了不同的
A
定义吗?除非我发现标准库中存在类,否则我认为不是:/
aList
不是指针,所以应该是
aList.push_back(A)
@hmjd你应该把它作为一个答案发布。@hmjd:那应该是一个答案。有没有可能那些引用了不同的
A
定义?除非我发现标准库中存在类,否则我认为不是:/
aList
不是指针,所以应该是
aList.push_back(A)@hmjd你应该把它作为答案发布。@hmjd:应该是答案。
#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);
}