Подтвердить что ты не робот

Можно ли передать cout или fout функции?

Я пытаюсь найти способ передать fout или cout функции. Я понимаю, что есть логически простые способы справиться с этим, например, положить ifs в любую функцию, которая выводит данные или даже просто записывать функцию в обоих направлениях. Однако это кажется примитивным и неэффективным. Я не верю, что этот код когда-либо будет работать, я помещаю его здесь, чтобы было легко увидеть, что мне "нравится" делать. Имейте в виду, что я беру класс разработки алгоритмов с использованием С++, я никоим образом не являюсь опытным программистом на С++. Мой класс ограничен использованием заголовков, которые вы видите.

#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;
}
4b9b3361

Ответ 1

Они оба наследуются от ostream, поэтому попробуйте следующее:

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

Затем в основном передайте объект (cout или что-то еще), и он должен работать нормально.

Ответ 2

Да. Пусть ваша функция будет

sayhello(std::ostream &os);

Затем в функции вы можете использовать os вместо xout.

(Кстати, using namespace std сбрасывает все пространство имен std и не рекомендуется. < <24 > и т.п.)