jolly_w23 发表于 2008-5-16 21:30:22

用Connector框架,怎么不能申请ACE_Svc_Handler.

// ACE_Echo.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <ace/Reactor.h>
#include <ace/Svc_Handler.h>
#include <ace/Connector.h>
#include <ace/Synch.h>
#include <ace/SOCK_Connector.h>
class My_Svc_Handler;

typedef ACE_Connector<My_Svc_Handler,ACE_SOCK_CONNECTOR> MyConnector;
class My_Svc_Handler:
        public ACE_Svc_Handler <ACE_SOCK_STREAM,ACE_NULL_SYNCH>
{
private:
public:
        My_Svc_Handler(){}
        int open(void*)
        {
                //注册相应事件
                ACE_Reactor::instance()->register_handler(this,
                        ACE_Event_Handler::READ_MASK);
                return 0;
        }

        int handle_input(ACE_HANDLE)
        {
                return 0;
        }

};

int main(int argc, char* argv[])
{
        ACE_INET_Addr addr(3000,"127.0.0.1");
        My_Svc_Handler *svchandler = new My_Svc_Handler();
        MyConnector connector;
        if(connector.connect(svchandler,addr) ==-1)
        {
                return 0;
        }
        while(1)
                ACE_Reactor::instance()->handle_events();
        return 0;

}


这段代码是能编译通过的。
我也学着这小例子写了一个。结果new 时就出了错。
提示是:
e:\vc7工程\项目一\client\复件client_v4.1f\client_v1\client_v1dlg.cpp(58): error C2661: “ACE_Svc_Handler<_ACE_PEER_STREAM,_ACE_SYNCH>::operator new” : 没有重载函数接受 3 个参数
      with
      [
            _ACE_PEER_STREAM=ACE_SOCK_Stream,
            _ACE_SYNCH=ACE_NULL_SYNCH
      ]
为什么上面那个例子行啊。
我另外写的那个用时new就不行了。

winston 发表于 2008-5-17 11:11:12

没看见你的例子,说不好。
你代码贴上来看看。
页: [1]
查看完整版本: 用Connector框架,怎么不能申请ACE_Svc_Handler.