0

C++ でファイルに出力しようとしていますが、何らかの理由でこの奇妙なエラーが発生し続けます。

エラー C2061: 構文エラー: 識別子 'ofstream'

私は以下を含めました:

#include <fstream>
#include <iostream>

これは私の機能です:

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

私はですusing namespace std


私はそれを理解しました、それはすべて、ファイルを正しい方法で含めなかったためです。

4

3 に答える 3

3

使用するstd::ofstream

これは、どのストリームについて話しているのかを明示的に指定する必要があるためです。標準の名前空間stdには名前が含まれてofstreamいるため、コンパイラに明示的に伝える必要があります

基本的に次の 2 つの方法があります。

.cpp ファイルのすべてのインクルード ファイルの直前に、using ディレクティブがあります。

1:using namespace std;

また

2: 名前空間 std からの各名前にプレフィックスを付けます。std::

編集2:

オプション 1 (上から) は、通常、グローバル名前空間の汚染を回避するための推奨される方法であるため、改訂された関数宣言は次のようになります。

void Date::PrintDate(std::ofstream& resultFile) const 
{ 
    resultFile << m_day << "/" << m_month << "/" << m_year; 
} 
于 2010-09-05T16:23:18.047 に答える
0

問題は、含まれている「h」ファイルの順序にあり、修正後に正しい順序で含まれていませんでした。すべてが完全に機能しました。

于 2010-09-05T17:34:10.093 に答える
0

私は気が狂ったと思って、修正/簡略化されたバージョンをコンパイルしようとしましたが、うまくいきました。C コンパイラではなく C++ コンパイラを使用していますか? たとえば、gcc の代わりに g++ を使用します。

#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);
}
于 2010-09-05T16:49:23.720 に答える