出力ストリームを引数として渡す方法はありますか
void foo (std::ofstream dumFile) {}
私はそれを試しましたが、それは与えました
error : class "std::basic_ofstream<char, std::char_traits<char>>" has no suitable copy constructor
もちろんあります。参照を使用してください。そのように:
void foo (std::ofstream& dumFile) {}
そうでない場合、コピーコンストラクターが呼び出されますが、クラスofstream
にはそのような定義はありません。
コピーコンストラクタがないため、ostream
オブジェクトへの参照を渡す必要があります。
void foo (std::ostream& dumFile) {}
C++ 11準拠のコンパイラと標準ライブラリを使用している場合は、使用しても問題ありません
_void foo(std::ofstream dumFile) {}
_
右辺値で呼び出される限り。 (このような呼び出しはfoo(std::ofstream("dummy.txt"))
、またはfoo(std::move(someFileStream))
のようになります)。
それ以外の場合は、参照によって渡されるパラメーターを変更し、引数をコピー/移動する必要を回避します。
_void foo(std::ofstream& dumFile) {}
_