【发布时间】:2025-12-08 10:25:01
【问题描述】:
我正在开发自己的 OpenGL 菜单系统。 我想要的是将与菜单相关的所有对象放在一个向量中,这样我就可以轻松地将它们全部循环:
for (auto i : menuObjects)
{
i.checkInputs();
i.draw();
}
我尝试过使用其他循环方法,甚至在基类的函数中添加了this->draw();,但这显然会导致无限循环。
我的基类基本上是这样的:
class menuObject
{
public:
virtual void draw() { }
virtual void checkInputs() { }
};
而继承的类是这样的:
class Button : public menuObject
{
public:
void draw()
{
... drawing here ...
}
void checkInputs()
{
... checking inputs here ...
}
};
以下是我将它们保存在矢量中的方法:
std::vector<menuObject> menuObjects = {
Button(... parameters here ...)
};
它永远不会进入重载函数。 我宁愿不在自己的向量中包含每个不同的菜单对象。 有任何想法吗?
【问题讨论】:
-
你在哪里重载了任何函数?你的意思是被覆盖的函数吗?
-
他们重载了 draw 和 checkInputs 方法
-
@GabrielAlexander 看起来不像。不过,Op 已经覆盖了这些函数,这就是为什么 SolidMercury 怀疑这可能是他们的意思。
-
哦,是的,我自己也弄糊涂了。
标签: c++ inheritance vector c++17