2016-10-08 13 views
1

Meshオブジェクトを作成するファクトリメソッドがあります。メッシュオブジェクトにはさまざまな味の頂点クラスメンバーがあります。私が達成したい何テンプレート:クラス型のメンバでオブジェクトをインスタンス化する

template<class T> 
    NewMesh* createMesh(T) 
    { 
     mesh_data* md = new mesh_data; 
     T* vd = new T; 
     md->vdata = vd; 
     NewMesh* mptr = new NewMesh(generateUid()); 
     mptr->setData(md); 

     return mptr; 
    } 

はVDATAのためvertex_data_P3_N3クラスのメンバーでメッシュオブジェクトを作成する必要があり、このようなもの、です。

Mesh* polym = meshFactory.createMesh(vertex_data_P3_N3); 

明らかに、これは動作しませんし、コンパイル時エラーをスローします。

これは動作しますが、明白な理由(使用されていないvariabelを宣言する)ための醜いです:

vertex_data_P3_N3 vd; 
Mesh* polym = meshFactory.createMesh(vd); 

クラスの型を渡すためのより良い方法は何ですか?

答えて

4

createMeshの関数パラメータは未使用です。これは重複していることを強く示しています。

template<class T> 
    NewMesh* createMesh() { ... 


Mesh* polym = meshFactory.createMesh<vertex_data_P3_N3>(); 
関連する問題