Button类与各种类型的对象交互

时间:2013-08-30 23:56:49

标签: c++ class templates inheritance sfml

使用SFML,我创建了一个简单的按钮类,我计划将其发展为更高级的GUI,它将在我制作的游戏中执行操作。现在我正在尝试决定按钮如何与游戏中的其他对象进行交互。我需要这些按钮才能与游戏对象,其他按钮进行交互,实际上还有许多甚至还没有创建的东西。我想出的解决方案是:

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

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

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

谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

对于您需要按钮的“交互”,您可以获得不同的信号。