Не могу вызовать функцию сохраненного элемента на хранимом объектеC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Не могу вызовать функцию сохраненного элемента на хранимом объекте

Сообщение Anonymous »

Я пытаюсь создать своего рода систему событий, мне все равно, если она неоптимально, я делаю это для удовольствия. Я не хочу альтернативных решений, я хочу понять, почему это не работает, и как я могу это исправить. Храните функции, которые должны вызывать из 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»