我有一个创建网格对象的工厂方法。网格对象具有一个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对象。
Mesh* polym = meshFactory.createMesh(vertex_data_P3_N3);
显然,这是行不通的,并且会引发编译时错误。
这有效,但是由于显而易见的原因而很难看(声明一个不使用的variabel):
vertex_data_P3_N3 vd;
Mesh* polym = meshFactory.createMesh(vd);
传递类类型的更好方法是什么?
最佳答案
createMesh
的功能参数未使用,强烈表明它是冗余的。
template<class T>
NewMesh* createMesh() { ...
Mesh* polym = meshFactory.createMesh<vertex_data_P3_N3>();