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