Вложенный шаблон наблюдателя

Мне нужно шаблон наблюдателя с моими классами уведомлений. Я использую этот код:

#include <Poco/Notification.h>
#include <Poco/Observer.h>
#include <Util/RegisterObserver.h>
namespace RPC {
class ParseErrorNotify : public Poco::Notification{
public:
    ParseErrorNotify();


private:
    //std::string m_message;
};

template <class C>
class Observer:public Poco::Observer<C,ParseErrorNotify>{
    public:
        typedef Poco::Observer<C,ParseErrorNotify> Base;
        Observer(C& object, Base::Callback method):Base(object,method){}
};

}

Но у меня ошибка при компиляции:

ParseErrorNotify.h: 20: 35: ошибка: "Poco::Base::Callback" не является типом

Я использую gcc версии 4.7.3 (Ubuntu/Linaro 4.7.3-1ubuntu1). Это так странно, потому что с MSVC2010 на компиляции win все в порядке.

1 ответ

Решение

Это не странно. Вы должны использовать typename,

Observer(C& object, typename Base::Callback method):Base(object,method){}

поскольку Callback является зависимым именем Прочитайте это Где и почему я должен поставить ключевые слова "template" и "typename"? для дополнительной информации.

Другие вопросы по тегам