我有一个集合里面同时放入各种类型的数据。具体放入了什么类型的数据预先无法知道,只有这个数据类型的类型名字符串。我怎样才能取到里面的数据?
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以后怎么传换类型。
   
}