1

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 つのハンドラ メソッドを提供するにはどうすればよいですか?

4

0 に答える 0