我有一个集合里面同时放入各种类型的数据。具体放入了什么类型的数据预先无法知道,只有这个数据类型的类型名字符串。我怎样才能取到里面的数据?
class my_class
{
....
};
class collect
{
private:
long *pdata;
int num;
public:
collect()
{
num=0;pdata=NULL;
}
template<class T>
void add(T *t)
{
if(num%10==0)
{
long *p=new long[num+10];
for(int i=0;i<num;i++)p[i]=pdata[i];
delete pdata;
pdata=p;
}
pdata[num++]=(long)t;
return;
}
long Get(int pos)
{
if(pos<=0 || pos>num)return 0;
return pdata[pos-1];
}
}
main()
{
collect ct;
int a1;
long a2;
my_class a3;
ct.add(&a1);
ct.add(&a2);
ct.add(&a3);
long get=ct.Get(3);//假如我不知道第三个数据的类型,只知他的类类型名为"class_name",我得了get以后怎么传换类型。
}