Шаблоны: создание объекта с представителем класса.

У меня есть фабричный метод, который создает объекты 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);

Какой лучший способ передать тип класса?

1

Решение

Параметр функции createMesh не используется, что является убедительным признаком его избыточности.

template<class T>
NewMesh* createMesh() { ...Mesh* polym = meshFactory.createMesh<vertex_data_P3_N3>();
4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector