Qt 编译出错:undefined reference to vtable XXX

 

在Qt编译的过程中,进程会出现 error: undefined reference to `vtable for 类名'的问题,对于不经常使用QT的人来说甚是头疼,其实这类问题发生的主要原因在于,一般我们定义了一个类以后,如果他是继承了其他类的话

就比如说我们用MyBarView继承自QGraphicsView,由于QGraphicsView中存在虚函数,而对于继承关系来说,子类和父类使用同一个虚函数表,即我们使用初始化MyBarView类时候,会去查看父类的虚函数表(其实就是自己的),虚函数表实际上就是函数地址表,这个表内的地址以一定函数名为规则进行命名,当然这就是和编译器编译原理有关系了。

所以,当我们定义好这个类的时候,他的虚函数表也就固定了,那么又为什么会出现上面undefined reference to vtable XXX问题呢,实际上有很多原因,比如这个时候对MyBarView这个类重新命名,例如定义为QMyBarView时就会出现上面de 问题,主要是因为虚函数表还保留了上次的函数地址,所以这个时候需要重新构建,执行qmake就好了。你就会发现编译通过了

猜你喜欢

转载自blog.csdn.net/fsfsfsdfsdfdr/article/details/84372423