c++ - 抽象类中的虚函数未被调用
问题描述
我正在使用 GameObject/Entity 系统开发一个基本的游戏循环,但我对 C/C++ 真的很陌生(但我之前在 C# 中使用过 Raylib 的绑定,这是我正在使用的库,所以我了解它是如何工作的)。
我一直在努力,主要是了解 C/++ 如何处理指针和虚函数。我没有错误,并且在插入一些调试调用后发现了我的问题,这表明我的背景实际上并没有对其执行任何操作,尽管它们被调用,这导致人们相信我的狡猾的虚函数是类Background里面的责备。
老实说,我很想得到任何帮助(请烤我的代码,我需要学习很多东西,我还删除了肤浅的代码):
//main.cpp
int main(void)
{
// Init
std::vector<GameObject*> gameObjects;
Background bg;
gameObjects.push_back(&bg);
// Main game loop
while (!WindowShouldClose())
{
// Update
for (GameObject* gameObject : gameObjects)
{
gameObject->Update();
}
// Draw
for (GameObject *gameObject : gameObjects)
{
gameObject->Render();
}
}
//End
return 0;
}
//gameobject.h
class GameObject
{
public:
GameObject(void) {};
virtual void Update() = 0;
virtual void Render() = 0;
~GameObject(void) {};
};
//background.h
#include "gameobject.h"
class Background : public GameObject
{
public:
Background(void){};
virtual void Update(){};
virtual void Render(){};
~Background(void){};
private:
Texture texture;
};
//background.cpp
#include "background.h"
#include "gameobject.h"
#include <iostream>
//Constructor
Background::Background()
{
...
}
//Methods
void Background::Update()
{
...
}
void Background::Render()
{
...
}
//Deconstructor
Background::~Background()
{
...
}
然而,问题来了,我在 Background 类中的任何函数都没有被调用。我不认为这可能是我的任何标题锁定的结果,但如果有人想查看它们,我可以添加它们。
编辑:解决了!(我需要记得标记这个很快解决)
class GameObject
{
public:
GameObject(void) = default;
virtual void Update() =0;
virtual void Render() =0;
~GameObject(void) = default;
};
class Background : public GameObject
{
public:
Background(void);
virtual void Update();
virtual void Render();
~Background(void);
private:
Texture texture;
};
解决方案
推荐阅读
- shell - 使用 wget 排除域和文件类型
- c# - “CS0103:当前上下文中不存在名称‘模型’”错误仅在服务器上
- windows - gnu grep --include 文件扩展名区分大小写
- python - Python 2:比较两个时间点之间的时间戳
- python - 尝试更新 MultiSelect 小部件时散景生成 PropertyValueList 错误
- mysql - 如何在mysql中启用only_full_group_by的情况下获取group by语句的单个值
- java - 如何在 Java 中显示数组中的某些数字?
- hyperledger-fabric - Hyperledger Composer 身份发布
- javascript - SVG 和 HTML:getBBox 和 getBoundingClientRect 与将鼠标悬停在检查器中的节点上时不同
- node.js - 要在渲染中进行比较的 firebase 数据