有没有方法 把不同类型的数据存放在一个数据结构里(不是存指针),该怎么处理
有没有方法 把不同类型的数据存放在一个数据结构里(不是存指针)
有没有方法 把不同类型的数据存放在一个数据结构里(不是存指针),用的时候取出来就行了.
别告诉我用结构体 和联合体
项目中用到 在线急等
------解决方案--------------------
lz说的不清楚,看你描述你用boost::any 看看
------解决方案--------------------
说实话,一般用到这个需求都是设计缺陷。
建议你说原始需求。
------解决方案--------------------
_variant_t
------解决方案--------------------
他的意思是:类似于 数组一样的一个结构,但是存的数据类型是不确定的,可以存int 也可以存char,还可以存float等等。又不让用结构,指针啥的,还真没这么用过.........
弱问,你这是要干个啥啊?
------解决方案--------------------
PVOID pData=new char[MAX_LEN];
想放什么放什么,以不同的类型取就好了
比如当int
int iData=(int)((int*)pData);
当字符串
char szTmp=(char)((char*)pData);
不就得了,所有的类型只不过是对应的数据长度不一样罢了
------解决方案--------------------
实现数据表,可以这样做:
方法一:为每个数据表建立一个类,那么一条记录就是一个对象。表中有多少字段,这个对象就有多少数据成员及访问接口。这样比较明确,但是如果表很多,就比较烦琐。
方法二:建立一个通用的类TableRecord表示任意的数据表。用一个类层次表示字段。比如有一个基类Field,它有许多派生类,每个表示对应一种字段类型,如IntField,FloatField, DatetimeField, VarcharField等等,Field提供get_type(), get_length()等接口获得类型信息。在TableRecord中,用Field*(或Field&)数组或容器记录它们。并提供
const IntField& get_int_field(int index);
void set_int_field(int index, const IntField& value);
之类的接口访问或设置它们。如果输入的字段序号(也可以提供字段名称)与接口的实际类型不一致,则抛出一个异常。TableRecord还可以提供接口返回每个字段的类型/长度等信息;或者,更一般地、由一个类Table返回这些信息。
Table可以包含字段描述及多个TableRecord;TableRecord可以包含多个Field以存储字段值。Field有其类型派生类,这样就构成了对数据表的抽象。
有没有方法 把不同类型的数据存放在一个数据结构里(不是存指针),用的时候取出来就行了.
别告诉我用结构体 和联合体
项目中用到 在线急等
------解决方案--------------------
lz说的不清楚,看你描述你用boost::any 看看
------解决方案--------------------
说实话,一般用到这个需求都是设计缺陷。
建议你说原始需求。
------解决方案--------------------
_variant_t
------解决方案--------------------
他的意思是:类似于 数组一样的一个结构,但是存的数据类型是不确定的,可以存int 也可以存char,还可以存float等等。又不让用结构,指针啥的,还真没这么用过.........
弱问,你这是要干个啥啊?
------解决方案--------------------
PVOID pData=new char[MAX_LEN];
想放什么放什么,以不同的类型取就好了
比如当int
int iData=(int)((int*)pData);
当字符串
char szTmp=(char)((char*)pData);
不就得了,所有的类型只不过是对应的数据长度不一样罢了
------解决方案--------------------
实现数据表,可以这样做:
方法一:为每个数据表建立一个类,那么一条记录就是一个对象。表中有多少字段,这个对象就有多少数据成员及访问接口。这样比较明确,但是如果表很多,就比较烦琐。
方法二:建立一个通用的类TableRecord表示任意的数据表。用一个类层次表示字段。比如有一个基类Field,它有许多派生类,每个表示对应一种字段类型,如IntField,FloatField, DatetimeField, VarcharField等等,Field提供get_type(), get_length()等接口获得类型信息。在TableRecord中,用Field*(或Field&)数组或容器记录它们。并提供
const IntField& get_int_field(int index);
void set_int_field(int index, const IntField& value);
之类的接口访问或设置它们。如果输入的字段序号(也可以提供字段名称)与接口的实际类型不一致,则抛出一个异常。TableRecord还可以提供接口返回每个字段的类型/长度等信息;或者,更一般地、由一个类Table返回这些信息。
Table可以包含字段描述及多个TableRecord;TableRecord可以包含多个Field以存储字段值。Field有其类型派生类,这样就构成了对数据表的抽象。