You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:编译时出现undefined reference to `vtable for Item'错误的原因?

错误原因分析:undefined reference to `vtable for Item'

这个链接器错误的核心原因是Item类的虚析构函数没有实现:

  • 在Item.h中声明了虚析构函数:virtual ~Item();
  • 但对应的Item.cc文件里只实现了构造函数,完全没写析构函数的实现代码。

C++规则里,只要类包含虚函数,编译器就会生成虚函数表(vtable)。如果某个虚函数只有声明没有实现,链接器会找不到该函数对应的vtable条目,直接抛出这个错误。

另外提个小细节:你的CMakeLists.txt里把item.h加到SOURCES列表里是多余的,CMake只需要添加.cc这类实现文件,头文件会通过代码里的#include自动关联,不过这不是当前错误的诱因。

解决方法很直接,在Item.cc里补上析构函数的实现:

#include "item.h"
Item::Item(){}
Item::~Item(){} // 添加这一行

内容的提问来源于stack exchange,提问作者binary_psychic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 11:42:59