我需要使用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编译好了。
答案 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?。