web-dev-qa-db-ja.com

関数にcoutまたはfoutを渡すことは可能ですか?

関数にfoutまたはcoutを渡す方法を見つけようとしています。これを処理する論理的に簡単な方法があることに気づきます。たとえば、データを出力する関数にifsを置くか、双方向で関数を書くだけです。しかし、それは原始的で非効率的です。このコードが機能することはないと思います。ここに置いて、自分が「好き」にしたいことを簡単に確認できるようにします。私がc ++を使用してアルゴリズム設計クラスを取っていることに注意してください。私は決して熟練したc ++プログラマではありません。私のクラスは、表示されるヘッダーの使用に限定されています。

#include <iostream>
#include <iomanip>
#include <fstream>

using namespace std;
void helloWorld(char);
ofstream fout;

int main()
{
    fout.open("coutfout.dat");
    helloWorld(c);
    helloWorld(f);

    return 0;
}
void helloWorld(char x)
{
    xout << "Hello World";
    return;
}
23
ChiefTwoPencils

これらはどちらもostreamを継承しているため、次のように試してください。

void sayHello(ostream& stream)
{
    stream << "Hello World";
    return;
}

次に、メインでオブジェクト(coutなど)を渡します。これで問題なく動作するはずです。

42
Kevin Anderson

はい。あなたの機能をしましょう

sayhello(std::ostream &os);

次に、関数でosの代わりにxoutを使用できます。

(ところで、 using namespace std std名前空間全体をダンプするため、お勧めしません。 using std::coutなどでも大丈夫です。)

12
thb