C++工程出现如下错误:
c:\program files (x86)\microsoft visual studio 8\vc\include\fstream(675) : error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'。
修改前代码如下:
//使用事先生成好的txt文件,加载方框顶点坐标信息。
int GetRectInfoFromTxt(ifstream rectInfoTxt, int rectNum, ST_RECT_INFO *rectInfo)
{
if(rectInfoTxt)
{
for(int i = 0; i < rectNum; i++)
{
//依次读取每个方框的左上角、右下角坐标参数。
rectInfoTxt>>rectInfo[i].ax>>gTargetInfo[i].ay>>rectInfo[i].bx>>rectInfo[i].by;
}
}
return 0;
}
错误原因:istream作为函数参数的使用错误,由于流对象是不允许复制,所以在传给函数作为参数是应该传入引用。
解决办法:在流对象参数rectInfoTxt前加上“&”就可以了。修改如下:
int GetRectInfoFromTxt(ifstream &rectInfoTxt, int rectNum, ST_RECT_INFO *rectInfo)
{
if(rectInfoTxt)
{
for(int i = 0; i < rectNum; i++)
{
//依次读取每个方框的左上角、右下角坐标参数。
rectInfoTxt>>rectInfo[i].ax>>gTargetInfo[i].ay>>rectInfo[i].bx>>rectInfo[i].by;
}
}
return 0;
}