Я пытаюсь создать своего рода систему событий, мне все равно, если она неоптимально, я делаю это для удовольствия. Я не хочу альтернативных решений, я хочу понять, почему это не работает, и как я могу это исправить. Храните функции, которые должны вызывать из Event_receiver и иметь возможность позвонить им в хранящий объект
Это соответствующий код:
typedef void(event_receiver::* ev_rec_func)(const event_receiver::Msg&);
class event_receiver {
public:
struct Msg {
int irrelevant_test_data;
};
virtual void event_callback0(const Msg& m) {};
};
class event_triggerer {
private:
std::vector suscribers_vec;
public:
void trigger_event(const event_receiver::Msg& m) {
for (std::pair& e : suscribers_vec) {
//this line show the error expression must have pointer to member type
e.first->*(e.second(m));
}
}
< /code>
Visual Studio отображает это, когда я парят через ev_rec_func < /code>: < /p>
typedef void ev_rec_func (const &) < /p>
< /blockquote>
, но я не могу понять, почему. Я думаю, что с этим что-то не так. IS: < /p>
"Указатель на связанную функцию может использоваться только для вызова функции" < /p>
< /blockquote>
Как я могу решить ошибку? < /p>
Подробнее здесь: https://stackoverflow.com/questions/794 ... red-object