3

メイン関数とは別の関数でプログラムを作成しようとしていますが、かなりの問題があります。これが私のプログラムの簡略版です。

#include <iostream>
#include <fstream>
using namespace std;

void writeToFile(int x)
{
    outputFile << x << endl;
}

int main()
{
ofstream outputFile;
outputFile.open("program3data.txt");
for (int i = 0; i < 10; i++)
{
    writeToFile(i);
}
outputFile.close();
return 0;
}
4

2 に答える 2

5

writeToFile関数はoutputFile、別のスコープにある変数を使用しようとしています。出力ストリームを関数に渡すことができ、それは機能するはずです。

#include <iostream>
#include <fstream>
using namespace std;

void writeToFile(ofstream &outputFile, int x)
{
    outputFile << x << endl;
}

int main()
{
    ofstream outputFile;
    outputFile.open("program3data.txt");
    for (int i = 0; i < 10; i++)
    {
        writeToFile(outputFile, i);
    }
    outputFile.close();
    return 0;
}
于 2013-02-05T21:54:57.903 に答える
1

サブ機能に を認識させる必要がありますoutputFile。書かれているように、その変数は「main」関数内にのみ存在します。関数のシグネチャを次のように変更できます。

void writeToFile(int x, ofstream of)

そしてそれを次のように呼び出します:

writeToFile(i, outputFile);

これにより、変数がサブ関数に渡され、そのスコープでも使用できるようになります。

于 2013-02-05T21:55:34.787 に答える