c++ - 模板:用类类型的成员实例化一个对象

标签 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);

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

最佳答案

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

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


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

关于c++ - 模板:用类类型的成员实例化一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39938333/

相关文章:

c++ - 实现一个条件变量来解决多线程忙等待

c++ - 访问冲突写入 0xcdcdcef#,对象中的对象

c++ - 从友元函数返回后无法输出动态数组

c++ - 是否有类型特征来计算构造函数的总数?

c++ - 标准预定义了哪些用户定义文字?

c++ - 当不相关的类型定义为别名时,对函数的调用是不明确的

c++ - OpenCV waitKey() 函数在 mac 上总是返回 255

c++ - 使用 typedef、多维数组和指针时出现编译器错误

c++ - 在类里面使用模板的困惑

c++ - 模板和非模板成员函数指针的类型标识之间的区别