"ofstream" в качестве аргумента функции Есть ли способ передать выходной поток в качестве аргумента, например void foo (std::ofstream dumFile) {} Я пробовал это, но он дал error : class "std::basic_ofstream<char, std::char_traits<char>>" has no suitable copy constructor Ответ 1 Конечно, есть. Просто используйте ссылку. Например: void foo (std::ofstream& dumFile) {} В противном случае будет вызываться конструктор копирования, но для класса ofstream такого не существует. Ответ 2 Вам нужно передать ссылку на объект ostream, поскольку он не имеет конструктора копирования: void foo (std::ostream& dumFile) {} Ответ 3 Если вы используете совместимый компилятор С++ 11 и стандартную библиотеку, должно быть удобно использовать void foo(std::ofstream dumFile) {} пока он вызывается с rvalue. (Такие вызовы будут выглядеть как foo(std::ofstream("dummy.txt")) или foo(std::move(someFileStream))). В противном случае измените параметр, который нужно передать по ссылке, и избегайте необходимости копировать/перемещать аргумент: void foo(std::ofstream& dumFile) {}
Ответ 1 Конечно, есть. Просто используйте ссылку. Например: void foo (std::ofstream& dumFile) {} В противном случае будет вызываться конструктор копирования, но для класса ofstream такого не существует.
Ответ 2 Вам нужно передать ссылку на объект ostream, поскольку он не имеет конструктора копирования: void foo (std::ostream& dumFile) {}
Ответ 3 Если вы используете совместимый компилятор С++ 11 и стандартную библиотеку, должно быть удобно использовать void foo(std::ofstream dumFile) {} пока он вызывается с rvalue. (Такие вызовы будут выглядеть как foo(std::ofstream("dummy.txt")) или foo(std::move(someFileStream))). В противном случае измените параметр, который нужно передать по ссылке, и избегайте необходимости копировать/перемещать аргумент: void foo(std::ofstream& dumFile) {}