有没有办法将输出流作为参数传递,如
void foo (std::ofstream dumFile) {}
我试过了,但它给了
error : class "std::basic_ofstream<char, std::char_traits<char>>" has no suitable copy constructor
答案 0 :(得分:38)
当然有。只需使用参考。 像那样:
void foo (std::ofstream& dumFile) {}
否则将调用复制构造函数,但是没有为类ofstream
定义此类。
答案 1 :(得分:8)
您必须传递对ostream
对象的引用,因为它没有复制构造函数:
void foo (std::ostream& dumFile) {}
答案 2 :(得分:6)
如果您使用的是符合C ++ 11标准的编译器和标准库,则可以使用
void foo(std::ofstream dumFile) {}
只要用右值调用它。 (此类通话看起来像foo(std::ofstream("dummy.txt"))
或foo(std::move(someFileStream))
)。
否则,更改要通过引用传递的参数,并避免复制/移动参数:
void foo(std::ofstream& dumFile) {}