std::
ofstream
Device
::getZFile()
{
return
this
->xfile;
}
运行上述代码的时候出现错误:
严重性
|
代码
|
说明
|
项目
|
文件
|
行
|
禁止显示状态
|
错误(活动)
|
无法引用 函数 "std::basic_ofstream<_Elem, _Traits>::basic_ofstream(const std::basic_ofstream<_Elem, _Traits>::_Myt &) [其中 _Elem=char, _Traits=std::char_traits<char>]" (已声明 所在行数:1035,所属文件:"d:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\fstream") -- 它是已删除的函数
|
LxS_Lib
|
h:\工作\钻井掘进角度测量\SW_LxS_C__Lib_V1.0.2\LxS_Lib\LxS_Lib\LxS_Device.cpp
|
56
|
原因:
ofstream和ifstream是按值传递的,调用函数时会把实参复制给形参,这个过程会调用ifstream和ofstream的复制构造函数,而这个函数被delete了,所以VS会报C2280错误。
改正方法:正确的函数声明是把ifstream和ofstream从按值传递改为引用
代码改正为
:
std::
ofstream
&
Device
::getZFile()
{
return
this
->xfile;
}