我的程序中有一个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)
将做另一件事(不特定于事件发生地的气球)
如何在这里监听所有气球形状实例的事件并提供单个处理程序方法?