首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

跪求,该怎么处理

2014-01-15 
跪求struct MSGBUFF{int nUserIDint nType/*MSGBUFF&*/void operator (MSGBUFF MsgBuff){this-nUserI

跪求

struct MSGBUFF
{
int nUserID;
int nType;

/*MSGBUFF&*/void operator = (MSGBUFF MsgBuff)
{
this->nUserID = MsgBuff.nUserID;
this->nType = MsgBuff.nType;

//return *this;
}
};

void DoAction(MSGBUFF* pMsg)
{
if(!pMsg)
return;

MSGBUFF MsgBuff;
MsgBuff.nUserID = 1;
MsgBuff.nType = 1;

pMsg->operator=(MsgBuff);
//pMsg = &MsgBuff;//为什么不能调用operator =
return ;
}
int _tmain(int argc, _TCHAR* argv[])
{

MSGBUFF* pMsg = new MSGBUFF();
DoAction(pMsg);

delete pMsg;
 _CrtDumpMemoryLeaks();
return 0;
}

[解决办法]
pMsg = &MsgBuff;

是给指针赋值,而不是给对象赋值,肯定不会调用啊
你把它改成:
*pMsg = MsgBuff;

才会调用啊

你测试一下:
#include <iostream>

struct MSGBUFF
{
int nUserID;
int nType;

MSGBUFF& operator= (const MSGBUFF &MsgBuff)
{
this->nUserID = MsgBuff.nUserID;
this->nType = MsgBuff.nType;
std::cout << "call operator=" << std::endl; 
return *this;
}
};

void DoAction(MSGBUFF* pMsg)
{
if (!pMsg)
return;

MSGBUFF MsgBuff;
MsgBuff.nUserID = 1;
MsgBuff.nType = 1;

//pMsg->operator=(MsgBuff);
*pMsg = MsgBuff;//为什么不能调用operator =
return;
}
int main()
{

MSGBUFF* pMsg = new MSGBUFF();
DoAction(pMsg);

delete pMsg;
_CrtDumpMemoryLeaks();
return 0;
}

热点排行