我的程序非常简单,所有混乱都发生在传递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来调试它,它显示(仅在写入功能的行上,抱歉我无法上传屏幕截图)
Xcode / GGK / GGK / ggk.cpp:110:28:调用隐式删除的' ofstream' (又名' basic_ofstream')
有人可以帮我这个,非常感谢你! :)
答案 0 :(得分:3)
在功能的签名
中int write(int TYPE,int *oc,int nx,int ny,ofstream otf, double ck)
参数otf
的类型为ofstream
,表示按值调用;因此,otf
将是来电者的一个副本。您可以将签名更改为
int write(int TYPE,int *oc,int nx,int ny,ofstream& otf, double ck)
将使用引用调用,并将使用与调用者相同的对象。
答案 1 :(得分:2)
您目前正在通过值otf
传递尝试通过引用传递
int write(int TYPE,int *oc,int nx,int ny,ofstream& otf, double ck)