hur.cn - 华软网

 热门搜索

请教this指针和静态成员函数问题!

  作者:未知    来源:网络    更新时间:2011/9/28
.h

class clusterServer{
public:
clusterServer(msgqueque *p_managequeue);
virtual ~clusterServer();
void Init();
void getconfig();
void addMessage(Message& message);
void sendMessage(Message& message);
static void CALLBACK fCNNC(int sID,int cID,int badd, char* clientip, char* url,int disconnect);
static void CALLBACK fDB(int cID,int opt,char* pdata, int ilen,int iUserData);
static void CALLBACK fMB(int cID,int opt,int param1,int  param2,int param3,int param4,char *pdata,int len,int iusrdata);


private:
long sid;
long cid;
bool link;
bool allowd;
CString manageip;
localconfig manageconfig;
msgqueque *g_managequeue;
};



-----------------------------------
.cpp

clusterServer *p_clusterServer;
clusterServer::clusterServer(msgqueque *p_managequeue)
{
sid=0;
cid=0;
manageip=_T("");
p_clusterServer=this;
g_managequeue=p_managequeue;
}
clusterServer::~clusterServer()
{
p_clusterServer=NULL;
delete p_clusterServer;
}
void clusterServer::fCNNC(int sID,int cID,int badd, char* clientip, char* url,int disconnect)
{
if(badd==1)
{
p_clusterServer->cid=cID;
p_clusterServer->link=TRUE;
if(clientip==p_clusterServer->manageip)
{
TRACE("连接回调启用\n");
((clusterServer *)p_clusterServer)->allowd=TRUE;
ServerSendMessage(cID,MSG_PTTControl,1,11,5,0,"",0);
}
else
{
TRACE("warm!非权限manage连接!\n");
((clusterServer *)p_clusterServer)->allowd=FALSE;
}

}
^^^^^^^^^^^^^^^^^…………………………………………………………
连接回调的时候 p_clusterServer->cid=cID;指针冲突,请教下原因。我记得在MFC下常这么用的啊????
---华软 网友回答---
问题解决了,在OnInitDialog中创建的类,return后类就析构了,所以回调的指针就出问题了。
没有人来拿分,我自己拿回了…………      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。