“ofstream”作为函数参数

时间:2012-03-11 20:44:52

标签: c++ function ofstream

有没有办法将输出流作为参数传递,如

void foo (std::ofstream dumFile) {}

我试过了,但它给了

error : class "std::basic_ofstream<char, std::char_traits<char>>" has no suitable copy constructor

3 个答案:

答案 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) {}