问题现象
今天编写代码,编译的时候遇到了类似“undefined reference to vtable for <classname>
” 的问题 ,网上查了好久都说是基类的析构函数没有实现,但我的代码中基类的析构函数是有实现的,后来又反复查看代码,发现基类中有个一普通的虚函数没有实现(太大意了),将这个没有具体实现的虚函数实现或将其定义为纯虚函数,问题得到解决。
解决办法
按一下几点排查基类:
- 基类的析构函数应定义为虚函数(或纯虚函数),且基类的析构函数一定要有实现(无论其被定义为虚函数还是纯虚函数)。
- 基类中的非纯虚函数都需要有实现。