关于“不能实例化抽象类“错误的解决办法
这篇⽂章讲解⼀个编程中遇到⼀个错误,那就是提⽰”不能实例化抽象类的错误“,在输出窗⼝有如下的错误提⽰信息,如下图:
根据具体情况不同,可能涉及到的类也可能不同,但是道理是⼀样的,之所以出现这样的错误呢,其实是因为,你继承的类的抽象⽅法没有在继承类中进⾏重写,⽐如在这⾥,我从CView类继承了⼀个类CTrlee类,但是我没有重写OnDraw函数,然后就进⾏了对CTrlee类的使⽤,如下:
那么现在我将OnDraw函数补上,并在源⽂件中进⾏定义,在头⽂件中,我去掉注释,是OnDraw⽣效,如下图:
在源⽂件中我进⾏定义,如下图:
现在我再编译,就可以了,并且正常运⾏,如下:
抽象类的使用
这⾥只是为了说明这么⼀个道理,在实际的mfc变成过程中,我们使⽤mfc类向导添加的类的时候,会⾃动为我们添加基类的抽象函数(虚函数),并定义。只是有的时候我们⼿动修改代码的时候,可能会遇到这样的问题,⽐如,如下图,通过使⽤类向导⽣成的类的头⽂件中,是这样的,如下图:
我们可以看见有个部分叫重写,就是⽤于重写基类的虚函数,但是为什么同样是继承与CView,这⾥除了OnDraw还有别的虚函数,刚才我们那个类中没有重写啊,其实因为这⼏个虚函数在CView基类进⾏了定义。⽽OnDraw是⼀个纯虚函数,只有声明,没有定义。
在重写虚函数的时候,⼀定要记住,那就是函数的函数名以及参数,返回类型等要和被重写的函数完全⼀致。否则就不能完成重写任务,仍然会有上⾯的错误出现。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论