📅  最后修改于: 2023-12-03 15:10:39.134000             🧑  作者: Mango
在 Qt 中,当出现 "未定义对 vtable qt 的引用" 错误时,通常指的是该类缺少了虚函数的实现。
一般情况下,当一个类中声明了虚函数时,编译器会自动生成该类的虚函数表(vtable),并在实现中使用该表。如果类的某个函数未被正确地实现,或者在该类的头文件中没有声明虚函数,则会导致 vtable 无法生成,从而出现未定义对 vtable qt 的引用错误。
若以上方案均未解决问题,可以尝试清除编译缓存或重新生成 Qt 项目,并重新编译。
class MyClass {
public:
virtual void myFunc() = 0;
};
class MyImplClass : public MyClass {
public:
virtual void myFunc() {
// 实现代码
}
};
// 在没有正确实现 MyClass::myFunc() 时,以下代码会触发未定义对 vtable qt 的引用错误
MyClass* obj = new MyImplClass;
obj->myFunc();