社区
C++ 语言
帖子详情
如何遍历类中的所有变量(在线讨论)
henanlsl
2010-10-29 08:44:39
对于一个类
class Test
{
T1 a;
T2 b;
T3*c;
void func1();
}
怎么通过遍历得到变量数目,然后对每个变量进行操作的?
我的基本思路是让所有的T1,T2,T3 都是继承一个COBJECT 基类,这个基类可以自动计算继承类的变量数并遍历其各变量。
现在的问题是如何设计这个基类,是不是也可设计类似于 CRUNTIME的类。
大家帮看看该如何设计。发现比想像中麻烦。
...全文
530
12
打赏
收藏
如何遍历类中的所有变量(在线讨论)
对于一个类class Test { T1 a; T2 b; T3*c; void func1(); }怎么通过遍历得到变量数目,然后对每个变量进行操作的? 我的基本思路是让所有的T1,T2,T3 都是继承一个COBJECT 基类,这个基类可以自动计算继承类的变量数并遍历其各变量。 现在的问题是如何设计这个基类,是不是也可设计类似于 CRUNTIME的类。 大家帮看看该如何设计。发现比想像中麻烦。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yutaooo
2010-10-30
打赏
举报
回复
这是个比较复杂的东西。LZ真正需要的是一个反射库。C++0x里,反射库基本是没希望了。几个候选者中,我觉得reflex c++是不错的。
参考一下:
http://root.cern.ch/drupal/content/reflex
要有心理准备,这绝对不是个简单的东西。
ryfdizuo
2010-10-30
打赏
举报
回复
正常的做法应该很难实现遍历类的变量啊~
CUDA是个好东西,^_^
henanlsl
2010-10-29
打赏
举报
回复
你是说这样,其实结构体我也想去,总感觉不地道有点
Test()
{
param.addnew(new T1(name1,id1);
param.addnew(new T2(name2,id2));
param.addnew(new T3(name3,id3));
}
不知道可不可以直接
像平常一样在类申明中直接定义 T1 name1之类的。
[Quote=引用 4 楼 dizuo 的回复:]
编号不方便,可以用型别替代,使用名字索引,用map存储。
如果要包裹各种类型的变量,可以考虑使用boost::any,,,不过any会丢失型别类型。。
[/Quote]
henanlsl
2010-10-29
打赏
举报
回复
同上楼[Quote=引用 6 楼 rrrfff 的回复:]
有什么实际用处?
[/Quote]
henanlsl
2010-10-29
打赏
举报
回复
我在写一个CUDA类,就是把内存中的数据,拷贝到显存中去。而显存中内存分配方式不一样[Quote=引用 7 楼 hnuqinhuan 的回复:]
干啥用的??
[/Quote]
無_1024
2010-10-29
打赏
举报
回复
干啥用的??
RLib
2010-10-29
打赏
举报
回复
有什么实际用处?
dingshaofengbinbin
2010-10-29
打赏
举报
回复
map可以吗??
ryfdizuo
2010-10-29
打赏
举报
回复
编号不方便,可以用型别替代,使用名字索引,用map存储。
如果要包裹各种类型的变量,可以考虑使用boost::any,,,不过any会丢失型别类型。。
henanlsl
2010-10-29
打赏
举报
回复
你那个是统计对象个数,我是想统计出一个类中变量的个数和各变量的大小(其实目标就是:根据一个类A,自动创建另一个类的类AA的对象:
AA类中的所有变量是类A所有变量的复制(也不完全一样,分配的内存不一样);)
另一个问题就是:如果换成类C,也同样做到:
(根据类C,自动创建另一个类似的的类CC的对象:
CC类中的所有变量是类C所有变量的复制(也不完全一样,分配的内存不一样);
[Quote=引用 2 楼 shexinwei 的回复:]
既然要统计类的对象的个数以及地址。
那么采用静态变量就可以了:
设置一个静态int型变量统计对象的个数;
设置一个静态的Test *数组存储每一个对象的地址。
[/Quote]
shexinwei
2010-10-29
打赏
举报
回复
既然要统计类的对象的个数以及地址。
那么采用静态变量就可以了:
设置一个静态int型变量统计对象的个数;
设置一个静态的Test *数组存储每一个对象的地址。
henanlsl
2010-10-29
打赏
举报
回复
[code=C/C++]
CParamCout
{
private:
void *p;
int num;
public:
GetNum();
AddNew();
}
class Test
{
CParamCount param;
Test()
{
param.addnew(new T1);
param.addnew(new T2);
param.addnew(new T3);
}
void func1()
{
int size=param.GetNum();
}
}
code]
写了上面这段代码,觉得有些问题,假如定义多个T1变量,完全靠编号确定是哪个参数就不太方便了。不知道有没有更好的建议。
matlab零基础入门路径规划城市
遍历
机器人路径等问题
matlab零基础入门路径规划城市
遍历
机器人路径等问题,...包括matlab入门知识(包括
变量
类型、数据类型、单元数组、结构体、矩阵、高级编程技巧等)、路径规划方面的案例、城市
遍历
方面的案例、机器人路径方面的案例等。
使用SAS array
遍历
变量
下面我们使用sas array去
遍历
客户的所有产品,计算客户持有产品的数量,如果产品的资产在10,000以上则认定客户正持有该产品(注意这里的统计标准是10,000,而不是0,因为对于一些持有金额比较小账户对业务的意义不大...
Android中的静态
变量
项目中遇到的问题 今天在项目中,用不同账号登录时发现上一个账号的数据还在,最后检查出静态
变量
的事。...java中静态
变量
可以被类直接引用,而非静态
变量
不可以。非静态
变量
,需要实例化后才分配空间,静态
变量
jQuery
遍历
的几种方式
jQuery
遍历
的几种方式1. jq对象.each(callback) 或 选择器.each(callback)1.1. 回调函数不带参数 (*注意:这种不带参数的回调只能获取到集合中的每一个元素对象,而不能获取到相应索引值,且只能通过this来获取对象)...
c语言
遍历
文件夹中所有文件名,C#
遍历
文件夹下所有子文件夹中的文件,得到文件名...
将文件名输出到一个ListBox中using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;namespace WindowsFormsApplication1{public partial...
C++ 语言
64,281
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章