необязательный параметр ofstream в переполнении стека

Как я могу сделать аргумент ofstream необязательным?

bool LookingFor(std::string &mi_name, ofstream &my_file = std::cout)
{
my_file << xxx;
.......

}

ошибка компиляции с указанной выше сигнатурой метода:

«Станд :: ofstream& my_file ‘имеет тип’ std :: ostream {aka std :: basic_ostream} ‘

Я использую mingw32.

Я хочу, чтобы эта функция записывала на консоль, когда нет второго параметра.
Я пробовал множество вещей, но ничего не работает.
Я не против, если я должен проверить код, чтобы увидеть, если он открыт, например:

if(my_file.isopen())
my_file << xxx;
else
cout << xxx;

любая хорошая идея?

1

Решение

Просто используйте ostream:

bool LookingFor(std::string &mi_name, std::ostream &out = std::cout) {
out << xxx;
}

Это будет работать с любым типом потока, не только fstream, но также cout, И другие типы потоков, такие как ostringstream,

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]