缺少vtable错误,表示我尚未定义虚拟函数
missing vtable error saying I have not defined my virtual function
我在实例化一个类时遇到了一些问题,一个错误告诉我我没有在类中定义我的虚拟函数。不过我有点困惑,因为我只有一个虚拟函数(总共一个函数(,而且我已经定义了它。它都是通过父类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
的范围内找到。
相关文章:
- 编译C++时未定义的引用
- vscode g++链路故障:体系结构x86_64的未定义符号
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- C++无法定义虚拟函数 OUTER 类和头文件
- 不知道某个东西是否被忽略会引入未定义的行为吗
- 如何进行故障排除:未定义对"非虚拟 thunk to ..."的引用
- 纯虚拟类和错误未定义对 'vtable 的引用
- 为什么虚拟方法生成对_sbrk的未定义引用?
- 专用纯虚拟模板函数(未定义引用)的另一个问题
- 为什么在已删除的指针上调用非虚拟成员函数是未定义的行为
- 实现虚拟函数时对 vtable 的未定义引用
- 从 STL 容器继承并删除"新"运算符以防止由于缺少虚拟析构函数而导致未定义的行为是否有意义?
- 编译器说模板类中的方法未定义,除非我将其设为虚拟
- 此处未定义虚拟析构函数
- C++ 未定义对“虚拟类的 vtable ”的引用
- 链接器错误:对“vtable for square”的未定义引用.代码包括虚拟函数
- 对vtable的未定义引用;虚拟功能问题
- 未定义的引用和非虚拟的 thunk to
- 如何排除故障:未定义的引用“非虚拟思维……”