CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

遍历类成员的问题???

楼主Lutins()2006-05-03 13:27:57 在 VC/MFC / 基础类 提问

请看下面的代码.  
  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

相关问题

关键词

得分解答快速导航

  • 帖主:Lutins

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo