gpt4 book ai didi

c++ - 我收到对 vtable 错误的 undefined reference

转载 作者:行者123 更新时间:2023-11-30 05:46:54 25 4
gpt4 key购买 nike

这是我在标题中的类(class)。

class AlarmPatterns
{
public:
AlarmPatterns() {}

virtual~AlarmPatterns();

//alarm patterns
enum class PATTERN_TYPES_E
{
BEEP_MODE, //150
IGN_BULBCHECK, //160
LOW_PRIO_REMIND, //170
DM1_RED, //200
HP_ALERT_5, //210
HP_ALERT_4, //220
HP_ALERT_3, //230
HP_ALERT_2, //240
HP_ALERT_1, //250
NUM_PATTERNS
};

static bool LoadPatternData(AP_S & pattern, const uint8_t id);

static const AP_S Patterns[];
};

AP_S 是同一命名空间内但类外的 typedef 结构

这是一个基类,因为我们不是从任何其他类派生的

在我的 test.cpp 文件中我有:

AlarmPatterns * TestPattern;

void setup()
{
TestPattern = new AlarmPatterns();
}

注释 TestPattern = new AlarmPatterns(); 结果没有错误

这里是错误

undefined reference to `vtable for Dragonfly::Alarm::AlarmPatterns'

因为我不可能遗漏任何基类的任何虚函数,所以我不明白我是如何得到这个错误的。

最佳答案

您正在向前声明一个析构函数,但您没有提供定义。

如果你想要一个空的析构函数,因为这是一个带有其他虚方法的基类,只需声明一个空的析构函数:

virtual ~AlarmPatterns() {} // Note the braces

关于c++ - 我收到对 vtable 错误的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28735740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com