首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问typeid的用法

2013-08-04 
请教typeid的用法!比如我使用一个listtype_info容器存放类型为typeidT而这个T是任意类型listtype_inf

请教typeid的用法!
比如我使用一个list<type_info>容器
存放类型为typeid<T>    而这个T是任意类型

list<type_info> a;
a.push_back(typeid(int));
a.push_back(typeid(char));
//...
list<type_info>::iterator pItor;
for (pItor = a.begin();pItor != a.end();++pItor)
{
    //我想得到的效果void* p = new T 怎么从类型type_info中拿出T? 即*pItor中拿出T?
}

望高手答复,谢谢. typeid Iterator 类
[解决办法]
没法, 你只能 if else 判断来进行不同的 new.
其实, 你 list 里如果不放 type_info, 放另外的东西就简单了:


#include <list>

typedef void/* 或其它的基类定义 */* (*CreateObject_t)();

template <typename T>
void* CreateObject()
{
return new T;
}

int main()
{
std::list<CreateObject_t>  a;
a.push_back(CreateObject<int>);
a.push_back(CreateObject<char>);

std::list<CreateObject_t>::iterator pItor;
for (pItor = a.begin();pItor != a.end();++pItor)
{
void* obj = (*pItor)();
}
}

热点排行
Bad Request.