main函数里用CFile类打开一个文件,然后在一个处理函数中进行输入输出数据处理,需将CFile对象作为参数传入处理函数中,在处理函数中又调用另外一个处理函数,需要再将CFile对象传入,下面程序出现拷贝构造函数错误,怎么处理?
main()
{
CFile myfile;
myfile.Open(filename, CFile::modeRead | CFile::typeText);
load(myfile);
.....
}
load函数里又要调一个load1(myfile),怎么处理这个问题?

解决方案 »

  1.   

    把load参数改为CFile *pf,在调用的时候load(&myfile)
      

  2.   

    什么拷贝构造函数错误啊,不懂啊?
    禁止一个cpp的class被拷贝通常是把那个class的copyconstructor和assignmentoperator声明为私有,并且不提供实现。
    当你调用(无论是显式还是隐式)这个class的copyconstructor(或assignmentoperator)时,编译器会给你个error说非法调用class的private成员函数
      

  3.   

    哪我的程序怎么会出现
    cannot convert parameter 1 from 'class CFile' to 'class CFile'
            No copy constructor available for class 'CFile' 
      

  4.   

    CFile的定义中没有拷贝构造函数,但你的load的调用方法是希望把这个对象完整的传递过去,会尝试调用Cfile的拷贝构造函数
    临时Cfile对象没有这个构造函数,所以No copy constructor available for class 'CFile'