2010-09-05 154 views
0

我试图打印到C++以及由于某种原因,我不断收到这个奇怪的错误文件:无法识别的类型

error C2061: syntax error : identifier 'ofstream'

我包括以下内容:

#include <fstream> 
#include <iostream> 

这是我的函数:

void Date::PrintDate(ofstream& resultFile) const 
{ 
    resultFile << m_day << "/" << m_month << "/" << m_year; 
} 

using namespace std


我想通了,这都是因为我没有以正确的方式包含文件。

+1

如果命名空间不是您的问题,请发布重现问题的完整示例(文件)。 – dyp 2010-09-05 16:29:14

+0

该文件是一个空的1,我创建并包含任何内容...我得到的错误,并不能编译它 – 2010-09-05 16:43:06

+0

我认为你的意思是'无法识别'的标题。 :) – Alerty 2010-09-05 16:44:34

回答

3

使用std::ofstream

这是因为我们必须明确指定的ofstream我们正在谈论。由于标准的命名空间std包含名称ofstream,它必须明确告诉编译器

主要有两种方式:

都在.cpp文件中包含的文件,都用指令

就在一个

1:using namespace std;

2:从空间std前缀的每个名称与std::

编辑2:

您修订的函数声明应该是选项1(上面),如下是避免全局命名空间污染的优选方式通常

void Date::PrintDate(std::ofstream& resultFile) const 
{ 
    resultFile << m_day << "/" << m_month << "/" << m_year; 
} 
+0

void Date :: PrintDate(std :: ofstream&resultFile)或者使用namespace std;插入行包含(并查找命名空间) – dyp 2010-09-05 16:25:27

+0

@ Nadav:你可以在'#include'之后加上'using namespace std;'或者每次使用'ofstream'时使用完全限定名'std :: ofstream'。 – casablanca 2010-09-05 16:25:55

+0

我已经在使用std命名空间了,而且看起来像这不是我的问题 – 2010-09-05 16:26:18

0

思考,我要疯了,我试着编译一个修改/简化的版本,它工作正常。你确定你使用的是C++编译器而不是C编译器吗?例如g ++而不是gcc。

#include <iostream> 
#include <fstream> 

using namespace std; 

void printDate(ofstream& resultFile) 
{ 
resultFile << 1 << "/" << 1 << "/" << 2010; 
} 

int main(int arg, char **argv) 
{ 
ofstream ofs("ADate.txt"); 
if (!ofs) cerr << "huh?"; 
printDate(ofs); 
} 
+0

我正在使用visual studio 10 proffesional版本,并且使用c的cpp文件c – 2010-09-05 16:53:38

0

的问题是与包括“H”的文件我没有包括在正确的顺序固定它的所有工作完全后的顺序。

+0

您能否让我们知道它到底是什么?旧订单和新订单是什么? – Chubsdad 2010-09-06 04:34:19