2010-09-05 162 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