在运行时指定对象类型

时间:2012-09-24 14:39:06

标签: c++ rtti

  

可能重复:
  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
    ...

感谢

1 个答案:

答案 0 :(得分:2)

C ++不允许这样做,因为在编译期间会解析类型。

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