Shape
プログラムに、ユーザーがシェイプ内をクリックしたかどうかを判断するヒット テスト ロジックを持つクラスがあります。
シェイプ.h
class Shape
{
Event<ShapeArgs> balloonBurst;
virtual void onMousePress(); //called when hit test is true on user's click
private:
bool hitTest(int x, int y);
};
シェイプ.cpp
virtual void onMousePress()
{
cout<<"Clicked inside the shape";
ShapeArgs arg;
arg.name = "XYZ";
NotifyEvent(balloonBurst, arg);
}
メイン クラスには、上記の形状クラスの複数のインスタンスがあります メイン プログラム: (Main.h)
vector<Shape*> shapes;
void handleShape(ShapeArgs &e);
.cpp
main()
{
for(int i=0;i<10;++i){
Shape *shape = new Shape(Color Color, string URL);
shapes.push_back(shape);
}
}
ここで、上記のインスタンスのballoonBurst
イベントをリッスンする必要があります。Shape
単一のインスタンスがある場合、次のようなことを行います。
AddListener(shape->balloonBurst, this, &MainProgram::handleBalloonBurst); //where shape is a single instance`
ただし、ここには複数のインスタンスがあり、それらにサブスクライブしてバルーンに同じハンドラー メソッドを提供する方法がわかりません (注: バルーンバースト イベントは、そのバルーンに固有ではないことを行っているわけではないため、そうではC#
sender
ありませんこのイベントでは私にとって重要です)。handleballoonBurst(ShapeArgs &e)
別のことを行います(イベントが発生したバルーンに固有のものではありません)
ここですべてのバルーン シェイプ インスタンスのイベントをリッスンし、1 つのハンドラ メソッドを提供するにはどうすればよいですか?