2016-10-08 2 views
1

메쉬 객체를 생성하는 팩토리 메소드가 있습니다. 메쉬 객체에는 다양한 풍미가있을 수있는 Vertex 클래스 멤버가 있습니다. 내가 무엇을 달성하고자하는템플릿 : 클래스 유형의 멤버를 사용하여 객체 인스턴스화

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); 

분명히 이것은 작동하지 않으며 컴파일 타임 오류가 발생합니다.

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

클래스 타입을 전달하는 더 좋은 방법은 무엇입니까 :

이 작동하지만, 분명한 이유가 밉다 (사용되지 않는 variabel 선언)?

답변

4

createMesh의 함수 매개 변수는 사용되지 않아 중복되는 것을 나타냅니다.

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


Mesh* polym = meshFactory.createMesh<vertex_data_P3_N3>(); 
관련 문제