微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决缺少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();
}

我的main.cpp文件中的错误来自此行

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 举报,一经查实,本站将立刻删除。