У меня есть фабричный метод, который создает объекты Mesh. Объект сетки имеет член класса 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;
}
Я хочу добиться чего-то вроде этого, что должно создать объект Mesh с членом класса vertex_data_P3_N3 для vdata.
Mesh* polym = meshFactory.createMesh(vertex_data_P3_N3);
Скорее всего, это не работает и выдает ошибку времени компиляции.
Это работает, но безобразно по очевидной причине (объявите переменную, которая не используется):
vertex_data_P3_N3 vd;
Mesh* polym = meshFactory.createMesh(vd);
Какой лучший способ передать тип класса?
Параметр функции createMesh
не используется, что является убедительным признаком его избыточности.
template<class T>
NewMesh* createMesh() { ...Mesh* polym = meshFactory.createMesh<vertex_data_P3_N3>();
Других решений пока нет …