Предоставить один и тот же обработчик событий нескольким экземплярам

у меня есть 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) будет делать что-то отдельное (не относится к воздушному шару, откуда пришло событие)

Как мне прослушать события всех экземпляров формы шара и предоставить один метод-обработчик?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]