Existe-t-il un moyen de passer le flux de sortie comme argument comme
void foo (std::ofstream dumFile) {}
J'ai essayé mais ça a donné
error : class "std::basic_ofstream<char, std::char_traits<char>>" has no suitable copy constructor
Bien sûr que oui. Utilisez simplement la référence. Comme ça:
void foo (std::ofstream& dumFile) {}
Sinon, le constructeur de copie sera appelé, mais il n'y a pas de tel défini pour la classe ofstream
.
Vous devez passer une référence à l'objet ostream
car il n'a pas de constructeur de copie:
void foo (std::ostream& dumFile) {}
Si vous utilisez un compilateur conforme C++ 11 et une bibliothèque standard, il devrait être correct d'utiliser
void foo(std::ofstream dumFile) {}
tant qu'il est appelé avec une valeur r. (De tels appels ressembleront à foo(std::ofstream("dummy.txt"))
ou foo(std::move(someFileStream))
).
Sinon, modifiez le paramètre à transmettre par référence et évitez de copier/déplacer l'argument:
void foo(std::ofstream& dumFile) {}