MFC用CArray附近突然出错,高手来看看吧!
本帖最后由 小笨蛋 于 2012-7-14 18:05 编辑CArray<UserInfo,UserInfo> UserArray;
class UserInfo
{
public:
SOCKET *usersock;
CString username;
int status;//0:offline//1:confermed//
public:
UserInfo();
virtual ~UserInfo();
void SetStatus(int s){status=s;}
int GetStatus(int s){return status;}
};
运行以下就出错,
一行行注释都找不到毛病。。好像是user.username="";和UserArray.Add(user);不能同时出现 UserInfo user;
user.username="";
user.usersock=pSock;
user.status=0;
UserArray.Add(user);在调试模式下会出现这个对话框。之后就跳转到CString的=运算符重载函数的地方了。。
更奇怪的是我一开始没问题,之后不知怎么的就出错了,前面的我一点也没动啊
刚刚发现了。。
如果把第一个代码里面class UserInfo
{
public:
SOCKET *usersock;
CString username;
int status;//0:offline//1:confermed//
public:
UserInfo();
virtual ~UserInfo();
void SetStatus(int s){status=s;}
int GetStatus(int s){return status;}
};中的 void SetStatus(int s){status=s;}
int GetStatus(int s){return status;}
去掉,一切又正常了。。。
但是这样我的status就不能被赋值了,如果使用 UserArray.GetAt(0).status=1;
编译都不能通过,显示G:\Visual C++\Server\ServerDlg.cpp(341) : error C2106: '=' : left operand must be l-value
更想不通的是 UserArray.GetAt(0).username=cname;和上面差不多啊,他却没有问题。真是邪了门
页:
[1]