我在clist中用了自己定义的类
clist<myclass,myclass> mlist;//作为cplist类的私有成员
但是我不知道该在哪里定义myclass,在该类的public中给出myclass,
错误信息:No copy constructor available for class 'Cplist::MyClass'.请教大家该如何给出这个myclass,才能在clist中使用?
谢谢!

解决方案 »

  1.   

    你使用链表模板类,则你的自定义类必须有“复制构造”函数:class MyClass
    {
      MyClass(MyClass &cSrc)
      {
         this->xxx=cSrc.xxx;
      }
       ....
    };“No copy constructor available for class 'Cplist::MyClass'”就是提示你没有“复制构造函数”
      

  2.   

    复制了构造函数,但是由于myclass类中有一个成员是同步类CCiticalSection,复制构造函数后提示错误error C2582: 'CCriticalSection' : 'operator =' function is unavailable。请大家看看,是不是对于同步类,this->xxx=cSrc.xxx这样构造不可以?谢谢!!
      

  3.   

    不是所有类都能复制,不能复制的就不复制了。关键是你看看在对myclass进行拷贝时,是不是需要复制来源对象里的所有成员。比如你那个CCiticalSection类,干吗要复制呢?你要从“复制”,“拷贝”,“照猫画虎”这样的概念出发,设计你的“复制构造函数”。还有,千万别把“复制构造函数”理解为“去复制一个构造函数”,我倒,应该是“被称为‘复制构造’的函数”