Ответ 1
Они оба наследуются от ostream
, поэтому попробуйте следующее:
void sayHello(ostream& stream)
{
stream << "Hello World";
return;
}
Затем в основном передайте объект (cout или что-то еще), и он должен работать нормально.
Я пытаюсь найти способ передать 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;
}
Они оба наследуются от ostream
, поэтому попробуйте следующее:
void sayHello(ostream& stream)
{
stream << "Hello World";
return;
}
Затем в основном передайте объект (cout или что-то еще), и он должен работать нормально.
Да. Пусть ваша функция будет
sayhello(std::ostream &os);
Затем в функции вы можете использовать os
вместо xout
.
(Кстати, using namespace std
сбрасывает все пространство имен std и не рекомендуется. < <24 > и т.п.)