首页 > 其他 > 详细

关于“不能实例化抽象类“错误的解决办法

时间:2014-03-03 16:21:13      阅读:545      评论:0      收藏:0      [点我收藏+]

大家好!这篇文章我讲解一个编程中遇到一个错误,那就是提示”不能实例化抽象类的错误“,在输出窗口有如下的错误提示信息,如下图:

bubuko.com,布布扣

根据具体情况不同,可能涉及到的类也可能不同,但是道理是一样的,之所以出现这样的错误呢,其实是因为,你继承的类的抽象方法没有在继承类中进行重写,比如在这里,我从CView类继承了一个类CTrlee类,但是我没有重写OnDraw函数,然后就进行了对CTrlee类的使用,如下:

bubuko.com,布布扣

那么现在我将OnDraw函数补上,并在源文件中进行定义,在头文件中,我去掉注释,是OnDraw生效,如下图:

bubuko.com,布布扣

在源文件中我进行定义,如下图:

bubuko.com,布布扣

现在我再编译,就可以了,并且正常运行,如下:

bubuko.com,布布扣

这里只是为了说明这么一个道理,在实际的mfc变成过程中,我们使用mfc类向导添加的类的时候,会自动为我们添加基类的抽象函数(虚函数),并定义。只是有的时候我们手动修改代码的时候,可能会遇到这样的问题,比如,如下图,通过使用类向导生成的类的头文件中,是这样的,如下图:

bubuko.com,布布扣

我们可以看见有个部分叫重写,就是用于重写基类的虚函数,但是为什么同样是继承与CView,这里除了OnDraw还有别的虚函数,刚才我们那个类中没有重写啊,其实因为这几个虚函数在CView基类进行了定义。而OnDraw是一个纯虚函数,只有声明,没有定义。

在重写虚函数的时候,一定要记住,那就是函数的函数名以及参数,返回类型等要和被重写的函数完全一致。否则就不能完成重写任务,仍然会有上面的错误出现。

好了,就讲到这里了,我是”农民“,有什么疑问,请留言

祝大家 好好学习 天天向上!!

关于“不能实例化抽象类“错误的解决办法,布布扣,bubuko.com

关于“不能实例化抽象类“错误的解决办法

原文:http://blog.csdn.net/xinzhiyounizhiyouni/article/details/20294061

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!