2012-09-24 56 views
0

可能重复:
Is there a way to instantiate objects from a string holding their class name?在运行时指定对象类型

我写了一个VBO模板类在OpenGL顶点缓冲区对象的工作。我正在为C++编写多个平台。

我想在运行时从配置文件中设置类型。

例如

<vbo type="bump_vt" ... /> 

Vbo* pVbo = new Vbo<bump_vt>(...); 

有没有什么办法可以做到这一点,没有一个大的if else块,例如,

Vbo* pVbo; 

if(sType.compareTo("bump_vt") == 0) 
    pVbo = new Vbo<bump_vt>(...); 
else if 
    ... 

感谢

+1

查看工厂设计模式 – Flexo

回答

2

C++不允许,因为类型在编译期间得到解决。

但是你可以使用std :: map来简化这个过程。