缺少vtable错误,表示我尚未定义虚拟函数

missing vtable error saying I have not defined my virtual function

本文关键字:未定义 虚拟 函数 表示 vtable 错误 缺少      更新时间:2024-09-21

我在实例化一个类时遇到了一些问题,一个错误告诉我我没有在类中定义我的虚拟函数。不过我有点困惑,因为我只有一个虚拟函数(总共一个函数(,而且我已经定义了它。它都是通过父类Renderer.hpp:继承的

#pragma once
#include "LifeSimulator.hpp"
#include "rlutil.h"
class Renderer
{
public:
virtual void render(const LifeSimulator& simulation) = 0;
};

下一个继承是RendererConsole.hpp:

#pragma once
#include "Renderer.hpp"
class RendererConsole : public Renderer
{
public:
virtual void render(const LifeSimulator& simulation) override;
};

然后是RendererConsol.cpp中的定义:

#include "LifeSimulator.hpp"
#include "RendererConsole.hpp"

void render(const LifeSimulator& simulation){
rlutil::cls();
rlutil::hidecursor();
for (int i = 0; i<simulation.getSizeY(); i++){
for (int j = 0; j < simulation.getSizeX(); j++) {
if (simulation.getCell(i, j) == true) {
rlutil::locate(i, j);
rlutil::setColor(5);
rlutil::setChar('*');
}
}
std::cout<<"n";
}
rlutil::showcursor();
}

在我的main.cpp文件中,错误来自的行是这个

Renderer* renderer = new RendererConsole();

我确信这个错误很简单,但我似乎不明白自己做错了什么。谢谢你的帮助。

在RendererConsol.cpp中:您需要指定render属于RendererConsole

void RendererConsole::render(const LifeSimulator& simulation)

如果你想更多地了解它,你可以查看https://en.cppreference.com/w/cpp/language/identifiers#Qualified_identifiers.::是所谓的范围解析运算符。它基本上说render可以在(类(RendererConsole的范围内找到。