我在写一个绘图程序,程序中加加入一个函数
class CGraph:public CObject 
{
...
public:
virtual void Serialize(CArchive &ar)=0;
DECLARE_SERIAL(CGraph)
};
//////////////////////////////////
IMPLEMENT_SERIAL(CGraph,CObject,0)...
每一个图形都派生于CGraph类,并在CGraph的派生类中实现Serialize函数,但是程序在编译的时候出现了错误
C2259,这是怎么回事呀?
最关键的是我不知道怎么改呀?
十分紧急

解决方案 »

  1.   

    'class' : cannot instantiate abstract class due to following members:
    你没有在派生类里面实现函数:Serialize,因为这个在基类是纯虚函数,如果子类不实现它,那么子类就也是虚类,因此子类也不能创建对象了.(eg CLine line)
    记着在每个子类中都实现它.
      

  2.   

    To:
    C1 Complier的C2259就是这样提示,你要确认你的所有使用的子类中都实现了Serialize函数.
      

  3.   

    我原来想在CGraph类中不实现Serialize()函数,将它的实现放在CGraph类的派生类中去实现,看来这样做是不行的了。
      

  4.   

    你可以在CGraph中不实现它也是可行的,但是你就不能这样用:eg
    CGraph objGraph; //因为CGraph还是个纯虚类。
    但是你可以这样用:
    CGraph *pGraph = new CLine; //其中CLine为CGraph的子类.