У меня есть класс с именем MyClass
, на который подписан другой класс. Когда происходят какие-то события, MyClass
должен уведомить подписчиков. Я пытаюсь использовать шаблон для типа подписчика. Потому что я не хочу позволять другим (отвечающим за класс абонента) заботиться об изменении MyClass
для подписки. Итак, я написал следующие коды:
class MyClass {
public:
template<typename T>
void subscribeEvents(const T &controller)
{
m_subscriber = static_cast<T*>(m_subscriber);
m_subscriber = &controller;
}
void notifyPositionChanged(const long &position) const {
(m_subscriber)->onPositionChanged(position);
}
private:
void m_subscriber; // will be changed to array or something else
}
На самом деле у объекта controller
есть метод с именем onPositionChanged
.
Но, как вы знаете, он не скомпилирован для этой строки.
(m_subscriber)->onPositionChanged(position);
Теперь я понимаю, почему это ошибка, но проблема в том, что я не знаю, как изменить коды или изменить свой дизайн. Пожалуйста, дайте мне знать, что мне не хватает и недоразумение. Заранее спасибо.