嵌套的观察者模板

时间:2013-11-14 05:57:50

标签: c++ poco-libraries

我需要使用Notification类观察模板。我使用这段代码:

#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 个答案:

答案 0 :(得分:0)

这并不奇怪。您应该使用typename

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

因为Callback是依赖名称。 有关详细信息,请阅读此Where and why do I have to put the "template" and "typename" keywords?