请教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)();
}
}