請問在CSession的DelMember function的程式碼如何改成
用//member.erase(remove(member.begin(),member.end(),UserID),member.end());
呢?
這樣程式碼就會乾淨多了...... 還有就是在AddMember function的程式,Error Checking如何做才會是Safe的呢?
像是try..catch之類的
//--------------------------------------------------------------------------- #ifndef USessionH
#define USessionH
#include
using namespace std;
const int MAX_MEMBER_COUNT = 40;
const int MAX_USERNAME_LEN = 65;
const int MAX_NICKNAME_LEN = 25; #define u_int8_t unsigned __int8
#define u_int16_t unsigned __int16
#define u_int32_t unsigned __int32 //---------------------------------------------------------------------------
//############################################################################
// 會談成員類別
class _CMember
{
private:
bool bHavePic; // 是否有個人圖片
char *Member_PicPath;// 個人圖片存檔路徑
bool bHaveSetInfo; // 是否有設定過資料
char vu8UserName[MAX_USERNAME_LEN]; // 成員帳號
char vu8NickName[MAX_NICKNAME_LEN]; // 成員暱稱
unsigned short vu16UserID; // 成員ID
public:
void SetMemberPicPath(char *path);
void SetMemberInfo(unsigned short UserID,char *UserName,char *NickName); char* getUserName(void){ return vu8UserName;};
char* getNickName(void){ return vu8NickName;};
unsigned short getUserID(void){ return vu16UserID;}; // constructer
_CMember(){
vu16UserID = 0;
bHavePic = false;
bHaveSetInfo = false;
Member_PicPath = NULL;
};
// destructor
~_CMember(){
// 記得將儲存圖片路徑記憶體清除
if(Member_PicPath) {
delete Member_PicPath;
Member_PicPath = NULL;
}
}; bool operator==(const unsigned short id)
{
return (id == vu16UserID)? true:false;
} bool operator!=(const unsigned short id)
{
return (id != vu16UserID)? true:false;
} };
//############################################################################
// 會談類別
class _CSession
{
private:
unsigned int mem_count; // 成員人數
vector<_CMember*> member; // 會談成員
public:
bool AddMember(unsigned short UserID,char *UserName,char *NickName);
bool DelMember(unsigned short UserID);
void ShowMemInfo();
// constructer
_CSession(){
mem_count = 0;
member.reserve(20);
};
// destructor
~_CSession(){
for(unsigned int i=0;i
#include
//---------------------------------------------------------------------------
void _CMember::SetMemberInfo(unsigned short UserID,char *UserName,char *NickName)
{
int len = strlen(UserName);
len = (len>MAX_USERNAME_LEN-1)?MAX_USERNAME_LEN-1:len;
strncpy(vu8UserName,UserName,len);
vu8UserName[len] ='\0'; len = strlen(NickName);
len = (len>MAX_NICKNAME_LEN-1)?MAX_NICKNAME_LEN-1:len;
strncpy(vu8NickName,NickName,len);
vu8NickName[len] ='\0'; vu16UserID = UserID;
bHaveSetInfo = true;
}
//---------------------------------------------------------------------------
void _CMember::SetMemberPicPath(char *path)
{
int len = strlen(path);
len = (len>_MAX_PATH)?_MAX_PATH:len;
Member_PicPath = new char(len 1);
strncpy(Member_PicPath,path,len);
Member_PicPath[len]='\0';
bHavePic = true;
}
//---------------------------------------------------------------------------
bool _CSession::AddMember(unsigned short UserID,char *UserName,char *NickName)
{
if(mem_count == MAX_MEMBER_COUNT)
return false;
else
{
_CMember *mem = new _CMember();
mem->SetMemberInfo(UserID,UserName,NickName);
member.push_back(mem);
mem_count ;
return true;
}
}
//---------------------------------------------------------------------------
bool _CSession::DelMember(unsigned short UserID)
{
//member.erase(remove(member.begin(),member.end(),UserID),member.end()); unsigned int index;
vector<_CMember*>::iterator pos;
pos = member.begin();
bool flag = false;
for(index=0;indexgetUserName());
ShowMessage(member[i]->getNickName());
ShowMessage(member[i]->getUserID());
}
}
//---------------------------------------------------------------------------
#pragma package(smart_init)
發表人 - scott777 於 2004/01/09 17:43:46