c++函数模板如何具体化?-灵析社区

努力的大名

我想具体化一个函数,我只有写好像不对 // 模板函数,用于给顶点赋值 template T2* VertexAssign(T1& M) { // 创建一个新的T2对象 T2* v = new T2; // 获取模型的顶点、法线和纹理坐标 std::vector Vertices = M.getVertices(); std::vector NormalVector = M.getNormals(); std::vector Texture = M.getTexCoords(); // 获取模型的索引和索引数量 v->Index = M.getIndices(); v->VertexCount = M.getNumIndices(); // 获取模型中的顶点数量 int loop = M.getNumVertices(); for (int i = 0; i Vertex.push_back(Vertices[i].x); v->Vertex.push_back(Vertices[i].y); v->Vertex.push_back(Vertices[i].z); // 将每个法线的x, y, z坐标赋值给NormalVector类中的数组 v->NormalVector.push_back(NormalVector[i].x); v->NormalVector.push_back(NormalVector[i].y); v->NormalVector.push_back(NormalVector[i].z); // 将每个纹理坐标的s, t坐标赋值给Texture类中的数组 v->Texture.push_back(Texture[i].s); v->Texture.push_back(Texture[i].t); } return v; } template VertexClass* VertexAssign(ImportedModel& M) { // 创建一个新的VertexClass对象 VertexClass* v = new VertexClass; // 获取模型的顶点、法线和纹理坐标 std::vector Vertices = M.getVertices(); std::vector NormalVector = M.getNormals(); std::vector Texture = M.getTextureCoords(); // 获取模型中的顶点数量 int loop = M.getNumVertices(); v->VertexCount = loop; for (int i = 0; i Vertex.push_back(Vertices[i].x); v->Vertex.push_back(Vertices[i].y); v->Vertex.push_back(Vertices[i].z); // 将每个法线的x, y, z坐标赋值给NormalVector类中的数组 v->NormalVector.push_back(NormalVector[i].x); v->NormalVector.push_back(NormalVector[i].y); v->NormalVector.push_back(NormalVector[i].z); // 将每个纹理坐标的s, t坐标赋值给Texture类中的数组 v->Texture.push_back(Texture[i].s); v->Texture.push_back(Texture[i].t); } return v; } template VertexCutClass* VertexAssign(T1& M) { // 创建一个新的VertexCutClass对象 VertexCutClass* v = new VertexCutClass; // 获取模型的顶点、法线和纹理坐标 std::vector Vertices = M.getVertices(); std::vector NormalVector = M.getNormals(); std::vector Texture = M.getTexCoords(); // 获取模型的索引和索引数量 v->Index = M.getIndices(); v->VertexCount = M.getNumIndices(); // 获取模型中的顶点数量 int loop = M.getNumVertices(); for (int i = 0; i Vertex.push_back(Vertices[i].x); v->Vertex.push_back(Vertices[i].y); v->Vertex.push_back(Vertices[i].z); // 将每个法线的x, y, z坐标赋值给NormalVector类中的数组 v->NormalVector.push_back(NormalVector[i].x); v->NormalVector.push_back(NormalVector[i].y); v->NormalVector.push_back(NormalVector[i].z); // 将每个纹理坐标的s, t坐标赋值给Texture类中的数组 v->Texture.push_back(Texture[i].s); v->Texture.push_back(Texture[i].t); } return v; } 这样写好像不对 template VertexCutClass* VertexAssign(T1& M) ![1704790691659.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241015/cc879d3658fdf541b8ba959d349b56b2.png)

阅读量:22

点赞量:0

问AI
函数不支持 partial specilization 。 可以直接重载: template VertexCutClass* VertexAssign(T1& M) { ... }