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`

但是,我在这里有多个实例,我不确定我应该如何订阅它们并为气球提供相同的处理程序方法(需要注意:Balloonburst 事件没有做不特定于该气球的事情,所以不像C# sender不是在这次活动中对我很重要)。handleballoonBurst(ShapeArgs &e)将做另一件事(不特定于事件发生地的气球)

如何在这里监听所有气球形状实例的事件并提供单个处理程序方法?

4

0 回答 0