c++ - 另一个函数对 ofstream 的基本使用

标签 c++ ofstream

我的程序非常简单,所有的困惑都发生在 ofstream 指针的传递周围,如下所示。

主程序:

int main()
{...
ofstream otf;
otf.open("hex_movie.xyz");
....
write(int (1),oc,nx,ny,otf,ck)
}

在write.h中,它以

开始
int write(int TYPE,int *oc,int nx,int ny,ofstream otf, double ck)
{.... return 0;}

我用Xcode调试了一下,显示出来了(只在write函数那一行,抱歉我不能上传截图)

Xcode/GGK/GGK/ggk.cpp:110:28:调用“ofstream”(又名“basic_ofstream”)的隐式删除复制构造函数

谁能帮我解决这个问题,非常感谢! :)

最佳答案

在函数的签名中

int write(int TYPE,int *oc,int nx,int ny,ofstream otf, double ck)

参数otf的类型是ofstream,表示按值调用;因此,otf 将是调用方协议(protocol)的拷贝。您可以将签名更改为

int write(int TYPE,int *oc,int nx,int ny,ofstream& otf, double ck)

这将使用引用调用并将使用与调用者相同的对象。

关于c++ - 另一个函数对 ofstream 的基本使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29118106/

相关文章:

c++ - 如何在自定义类的 map 中使用 emplace?

c++ - 我用 C++ 编写的文件中有更多字符

c++ - 将输出流对象和其他参数传递给多个线程

c++ - 如何在 C++ 中对文件系统进行非并发打印?

c++ - 微软C++编译器太烦人了!是否有针对 Windows 32/64 位编译的替代方法?

c++ - main中的非可移植const

C++ 多字符数组比较

c++ - 写入文件的最后 32 个字符

C++ 用简单的代码同时写入文件和控制台输出

c++ - 重置流但保留以前的数据