可能重复:
Is there a way to instantiate objects from a string holding their class name?
我编写了一个Vbo模板类来处理opengl中的顶点缓冲区对象。我正在用c ++编写多个平台。
我想在运行时从配置文件中设置类型。
e.g。
<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
...
感谢
答案 0 :(得分:2)
C ++不允许这样做,因为在编译期间会解析类型。
但是你可以使用std :: map来简化这个过程。