Наблюдатель и наследование C ++

0

Я работаю над проектом шаблона наблюдателя, и кажется, что мои классы не наследуются правильно. Класс My ObserverChild имеет обновление функции, которое берет объект типа Observable *, как показано здесь:

class ObserverChild : public Observer {
    void update(Observable* o) {
         // code here
     }
}

Мой класс UpperCaseMonitor наследуется правильно, я думаю

class UpperCaseMonitor : public Observable {
    // implement class
}

Когда я выполняю все, это то, что я получаю:

monitor.cpp: In member function 'virtual void UpperCaseMonitor::notify(): monitor.cpp:29:23: error: no matching function for call to 'Observer::update(UpperCaseMonitor&) (*it)->update(*this);

*it относится к итератору, который я использую в цикле for. Есть идеи?

Теги:
design-patterns
inheritance

1 ответ

0
Лучший ответ

попробуйте это вместо этого

(*it)->update(this);

* это получает объект, вам нужно передать указатель

  • 0
    Я не могу поверить, что я не думал об этом. Спасибо! Теперь он прекрасно компилируется.
  • 0
    принять ответ: D
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню