0

使用 SFML,我创建了一个简单的按钮类,我计划将其开发为更高级的 GUI,可以在我制作的游戏中执行操作。现在我正在尝试决定按钮如何与游戏中的其他对象交互。我需要这些按钮能够与游戏对象、其他按钮以及许多尚未创建的东西进行交互。我想出的解决方案是这样的:

template <typename T> class Button 
{T* myLink;};//you can imagine functions that do things to the object at this address

这样,按钮就可以链接到它计划与之交互的内容,我认为使用模板很好,因为现在我可以告诉按钮它将被激活/更改的类型。接下来,我想创建一个 Menu 类,它只是一个包含一堆按钮的框。但是这个 Menu 类不能只有一个 Button 向量,因为每个 Button 都是不同的类,具体取决于创建它的类型。

这个问题的最佳解决方案是什么,Menu 类应该是一个可以容纳多种类型按钮的模板,还是我应该以某种方式使用继承?如果继承,请做一个简短的例子。

谢谢你。

4

1 回答 1

0

我认为使用 Boost Signals 将是一个很好的解决方案。这样,您的菜单可以包含一个按钮向量,因为它们不依赖于类型。

class Button
{
public:
    boost::signal<void ()> pushed; 
}

对于您需要按钮进行的​​任何“交互”,您都可以使用不同的信号。

于 2013-08-31T00:34:54.627 回答