模板:使用类类型

时间:2016-10-08 23:09:45

标签: c++ templates c++11

我有一个创建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);

传递班级类型的更好方法是什么?

1 个答案:

答案 0 :(得分:4)

createMesh的函数参数未使用,这表明它是多余的。

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


Mesh* polym = meshFactory.createMesh<vertex_data_P3_N3>();