遍历类成员的问题???
请看下面的代码.
class PerData
{
public:
CString m_duty;
CString m_dep;
CString m_code;
CString m_name;
CString m_num;
}
for (int i=0;i<5;i++)
{
m_list.SetItemText(0,i,"这里我想依次添入CLASS PERDATA的成员")
}
请问有没有什么好点的算法啊!
问题点数:50、回复次数:10Top
1 楼ms_ms(feng)回复于 2006-05-03 14:31:13 得分 0
java里面倒是好处理,
关注c++怎么处理的Top
2 楼lzd(活着便精彩)回复于 2006-05-03 14:35:49 得分 0
用数组或者list吧Top
3 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2006-05-03 14:40:38 得分 0
那结构为何不定义成CString [] ?Top
4 楼meicaikourou()回复于 2006-05-03 14:47:36 得分 0
思路是这样的,但我不保证对CString而言正确
class PerData
{
public:
CString m_duty;
CString m_dep;
CString m_code;
CString m_name;
CString m_num;
}
PerData obj_PerData;
CString* pstrTemp = NULL;
pstrTemp = (CString*)&obj_PerData;
for (int i=0;i<5;i++)
{
m_list.SetItemText(0,i,(LPSTR)(LPCSTR)(pstrTemp + i));
}
Top
5 楼mynamelj(风之羽翼)回复于 2006-05-03 16:23:27 得分 0
我也不解为什么不用数组呢?要不然你用数据结构比喻连表
还有一种方法就是地址偏移运算,来获得下一个成员的地址Top
6 楼Lutins()回复于 2006-05-03 19:06:21 得分 0
只是想知道C++中有没有好点的算法能实现直接遍历类成员,用数组我也知道的.Top
7 楼lfchen(一条晚起的虫--床上用品[家纺]专卖)回复于 2006-05-03 19:18:36 得分 0
直接对地址操作。Top
8 楼Lutins()回复于 2006-05-03 19:25:18 得分 0
如何对地址操作呢???怎么计算地址偏移???Top
9 楼mynamelj(风之羽翼)回复于 2006-05-03 21:17:45 得分 0
/* 首先定义一个结构体 */
struct _TESTSTRUCT
{
TCHAR s1[MAX_PATH];
TCHAR s2[MAX_PATH];
TCHAR s3[MAX_PATH];
};
/* 用下面代码进行测试 */
_TESTSTRUCT tt;
memset(&tt, 0, sizeof(tt));
strcpy(tt.s1, _T("aaaa"));
strcpy(tt.s2, _T("bbbb"));
strcpy(tt.s3, _T("cccc"));
int nCount = (int)sizeof(tt) / sizeof(tt.s1);
for(int i=0; i<nCount; i++)
{
MessageBox((LPCTSTR)&tt+sizeof(tt.s1)*i);
}Top
10 楼mynamelj(风之羽翼)回复于 2006-05-03 21:28:47 得分 0
你可将下面这段代码放到for中测试一下,地址精确无误
strTemp.Format("0x%x--0x%x--0x%x\n0x%x",tt.s1, tt.s2, tt.s3,
(int)&tt+(sizeof(tt.s1)*i));
MessageBox(strTemp);Top




