读书人

小弟我要在一个CArray中改变一个值要用

发布时间: 2012-02-27 10:00:22 作者: rapoo

我要在一个CArray中改变一个值要用什么函数
比如我定义了结构体
typedef struct _userInfor
{
TCHAR chusename[MAX_NAME_STRING];;
TCHAR chuseip[IP_STRING];
BOOL bStatus[MAX_IP_ADS];
}userInfor;
extern CArray <userInfor,userInfor&> g_userInfor;

我本来有值
lili 878
meimei 565
lala 4545
我定义了
userInfor AdsSeUseInfor;

我要把
meimei 565 改成 meimei 789

用什么函数阿SetAt吗?
void SetAt(
INT_PTR nIndex,
ARG_TYPE newElement
);我不知道这个 nIndex是指 哪个,这两个参数分别指哪两个?


还是不能这么做要先删除这行,在插入一行,具体怎么做。指点下阿

[解决办法]
INT_PTR nIndex:你要修改的那个值的下标;
ARG_TYPE newElement:你要改成的新值。
[解决办法]
去VC版问吧。CArray是MFC私自带的。
[解决办法]

INT_PTR nIndex:你要修改的那个值的下标;
ARG_TYPE newElement:你要改成的新值。
====================
同意

ps:
现删除,
再插入也是可以的 ~
[解决办法]
xtern CArray <userInfor,userInfor&> g_userInfor;
================
引用不支持一般意义的赋值运算,因此元素用引用恐怕是有问题的(如果是STL中是一定不可以的.)
[解决办法]
楼上多虑了,MFC中的容器,一般第一个参数是元素类型,第二个参数是引用或返回值类型。
不像STL中,参数和返回值类型已写死:即直接使用元素类型的引用类型。
[解决办法]
Example
CArray <CPoint,CPoint> myArray;
CPoint pt;

// Add elements to the array.
for (int i=0;i < 10;i++)
myArray.Add( CPoint(i, 2*i) );

// Modify all the points in the array.
for (i=0;i <= myArray.GetUpperBound();i++)
{
pt = myArray.GetAt(i);
pt.x = 0;
myArray.SetAt(i, pt);
}

读书人网 >C++

热点推荐