我的程序中有一个Shape
类,它有一些命中测试逻辑,用于判断用户是否在形状内单击。
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);
};
Shape.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)
将做一个单独的事情(不是特定于事件发生地的气球)
如何在此处收听所有气球形状实例的事件并提供单个处理程序方法?