0

我遇到了这个错误。代码如下:我已经在我的代码中集成了 vmime 库。现在我需要根据要求在此处实现具有特定超时条目 30 秒的超时处理程序,以便实现这部分代码。

class myTimeoutHandler : public vmime :: net :: timeoutHandler {
    public:
     bool isTimeOut()
    {
        return(getTime()>=m_last + 30);
    }
    void resetTimeOut()
    {
        m_last = getTime();
    }
     bool handleTimeOut()
    {
        logMsg(DEBUG,2,"Connection Timed Out!");
        return true;
    }
private:

 const unsigned int getTime() const

 {
    return vmime::platform::getHandler()->getUnixTime();
 }
unsigned int m_last;
};

class myTimeoutHandlerFactory : public vmime::net::timeoutHandlerFactory
{
    public:
        ref <timeoutHandler> create ()
        {
            return vmime::create <myTimeoutHandler>();
        }
};

我尝试用 vmime::ref 代替 ref ,它给出了新的错误,

Svr.h:158: error: 'timeoutHandler' was not declared in this scope
Svr.h:158: error: template argument 1 is invalid

有人可以帮忙吗。谢谢

编辑:

我正在像这样在 my.C 文件中调用这部分代码

tr->setTimeoutHandlerFactory(vmime::create <myTimeoutHandlerFactory>());
4

1 回答 1

2

看起来你没有一个叫做的类型,timeoutHandler但是你有一个叫做myTimeoutHandler的。也许你的意思是:

vmime::ref<myTimeoutHandler>

或者,也许您想要timeoutHandler在命名空间中定义vmime::net

vmime::ref<vmime::net::timeoutHandler>
于 2013-04-04T13:56:31.993 回答