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

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

#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 компилируется нормально.


person Kopysov Evgeniy    schedule 14.11.2013    source источник


Ответы (1)


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

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

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

person ForEveR    schedule 14.11.2013