0

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

#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 上编译没问题。

4

1 回答 1

0

这并不奇怪。你应该使用typename,

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

因为Callback是从属名称。阅读这篇文章我必须在哪里以及为什么要放置“模板”和“类型名”关键字?了解更多信息。

于 2013-11-14T06:02:51.623 回答