我有一个创建 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;
}
我想要实现的是这样的,它应该为 vdata 创建一个带有 vertex_data_P3_N3 类成员的 Mesh 对象。
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>();
关于c++ - 模板:用类类型的成员实例化一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39938333/