2012-09-24 93 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來簡化這個過程。