如何解决缺少vtable错误,提示我尚未定义虚拟函数
我在实例化类时遇到了一些问题,并出现一个错误,告诉我我尚未在类中定义虚拟函数。不过,我有点困惑,因为我只有1个虚函数(总共一个函数),并且已经定义了它。这些都是通过父类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;
};
,然后在RendererConsole.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();
}
Renderer* renderer = new RendererConsole();
我确定错误很简单,但是我似乎无法弄清楚我做错了什么。感谢您的帮助。
解决方法
在RendererConsole.cpp中:您需要指定render
属于RendererConsole
void RendererConsole::render(const LifeSimulator& simulation)
如果您想进一步了解它,可以查看https://en.cppreference.com/w/cpp/language/identifiers#Qualified_identifiers。 ::
是所谓的范围解析运算符。基本上说render
可以在(类)RendererConsole
的范围内找到。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。