C++ &引用;在'之前应进行构造函数、析构函数或类型转换<';代币;
我遇到语法/解析错误,但似乎找不到它C++ &引用;在'之前应进行构造函数、析构函数或类型转换<';代币;,c++,constructor,destructor,C++,Constructor,Destructor,我遇到语法/解析错误,但似乎找不到它 DataReader.h:11:错误:在头文件中“之前需要构造函数、析构函数或类型转换,您需要显式使用std::vector,而不仅仅是vector 另外,我猜“Data.h”包含以下形式的语句: #ifndef DATA_H #define DATA_H ... #endif 这很好,但是您不应该在中使用这些include-guard,也不应该在文件本身中使用include“Data.h”。在头文件中,您需要在函数DataReader的声明中使用std:
DataReader.h:11:错误:在头文件中“之前需要构造函数、析构函数或类型转换,您需要显式使用
std::vector
,而不仅仅是vector
另外,我猜“Data.h”包含以下形式的语句:
#ifndef DATA_H
#define DATA_H
...
#endif
这很好,但是您不应该在
中使用这些include-guard,也不应该在文件本身中使用include“Data.h”
。在头文件中,您需要在函数DataReader
的声明中使用std::vector
而不是普通的vector
标准include
导致在std
命名空间中定义向量
类模板,并且头文件中的声明发生在使用命名空间std的任何之前代码>或使用std::vector代码>我认为在标题中可能需要编写std::vector DataReader()
作为使用名称空间std代码>不在范围内。在Datareader之前使用std:vector和not vector。即,如果没有#定义在Data.h本身的顶部,以及#endif在此文件的末尾。(因此,引用此标头的所有可能文件不需要写入这几行)。这只是一个样式提示,与编译错误无关,但是,如果包含的文件具有与外部#ifndef
保护相同的宏,则在#include
之前不要有#define
行,这一点非常重要,否则将永远不会包含头文件的内容。
#include "DataReader.h"
using namespace std;
vector<Data*> DataReader()
{
.....
}
#ifndef DATA_H
#define DATA_H
...
#endif