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 に答える