4

我遇到了语法/解析错误,但我似乎找不到它。

DataReader.h:11: 错误: '<' 标记之前的预期构造函数、析构函数或类型转换

这是 DataReader.h:

#include <fstream>
#include <iostream>
#include <vector>

#ifndef DATA_H
#define DATA_H
#include "Data.h"
#endif

vector<Data*> DataReader();   // This is line 11, where the error is..

这是 .cpp 文件:

#include "DataReader.h"

using namespace std;

vector<Data*> DataReader()
{
 .....
}

我跳过了 DataReader() 的内容,因为我认为它无关紧要,但如果需要,我可以发布它。

感谢您的任何意见/建议。

4

4 回答 4

6

在您的头文件中,您需要明确使用std::vector而不仅仅是vector.

另外,我猜“Data.h”包含以下形式的语句:

#ifndef DATA_H
#define DATA_H
...
#endif

没关系,但您也不应该#include "Data.h"在文件本身中使用这些包含防护。

于 2009-11-02T07:56:41.930 回答
4

在你的头文件中,你需要在函数的声明中使用std::vector而不是简单的。vectorDataReader

标准包含<vector>导致vector在命名空间中定义类模板,std并且头文件中的声明发生在任何using namespace std;or之前using std::vector;

于 2009-11-02T07:57:40.793 回答
4

我认为在你的标题中你可能需要写std::vector<Data*> DataReader();,因为using namespace std;不在范围内。

于 2009-11-02T07:58:15.563 回答
1

在 Datareader 之前使用 std:vector 而不是 vector。

于 2009-11-02T07:58:42.223 回答