在 Debug模式下进行编译时,我的xcode编译具有以下链接错误:

"<method name>", referenced from:
Vtable for <classname>in <objectfile.o>

"non-virtual thunk to <method name>", referenced from:
Vtable for <classname>in <objectfile.o>

奇怪的是:它仅出现在我的一个构建目标中(这两个目标对于该代码几乎是相同的),此外,如果这些方法是在头文件中定义的,而不是在.cpp中定义的,那么这两个目标都可以正常工作。

所有这些方法都是纯虚拟的。发生这些错误的类继承自多个类,但其中只有一个会导致这些错误。

任何人都知道导致此错误的原因是什么?

最佳答案

遇到了同样的问题。
当我们定义一个虚拟成员函数(在.h头文件中)但未实现它(在.cpp文件中)时,它就简单地发生了。

就我而言,该实现位于一个#define中,无法实际编译。对于此类常见错误,GCC应该有更明确的信息,例如

virtual function <function> defined but not implemented in class <class>

关于c++ - “non-virtual thunk to <method name>”,从: Vtable for <classname>in <objectfile.引用>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5831063/

10-13 02:50