aihot  2020-11-12 09:22:10  OpenCV |   查看评论   
Ca a1;  
  • pA = &a1;  
  • pA->B();    // 其实这句调用的是CA::B();  
  •  

    有了虚函数后,将上述两个B函数都声明成virtual函数,则有
     

    1. pA = &a1;  
    2. pA->B();    // 其实这句调用的是Ca::B();  
    3. pA = &A1;  
    4. pA->B();    // 其实这句调用的是CA::B();  

     

    这就是我总结的虚函数的妙用,但应该理解还不是很深刻,欢迎高手拍砖。

    回到我之前的问题,MFC中有两个十分重要的虚函数,document中的Sirialize函数和view中的OnDraw函数。而这两个函数又是纯虚函数,需要用户在自己的CMyDoc和CMyView中改写,而我的类继承了CView,却没有改写OnDraw函数,就变成了抽象类,不能对其实例,于是就有了报错“不能实例化抽象类”。bingo!

    但是我还没太想好好的解决办法,如果把我做的类继承改为CWnd,我类里的部分函数就无法使用,如getDC()。本身又不想把OnDraw函数复写,所以还请高手给我一种大家通用的方法。

     

    除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自不能实例化抽象类的浅尝

    留言与评论(共有 0 条评论)
       
    验证码:
    [lianlun]1[/lianlun]