我正在使用VCG库
由于Trimesh无法复制到头文件MyProcessing.h中,因此我有一个私有(private)构造函数

class MyMesh    : public vcg::tri::TriMesh< std::vector<MyVertex>, std::vector<MyFace> ,

std::vector<MyEdge>  > {

private:
    MyMesh(const TriMesh &mesh);
    MyMesh operator= (const TriMesh &mesh);

};

而且在我的MeshProcessing.cpp文件中调用它很麻烦
我想做的是在那里创建我的网格
香港专业教育学院尝试过的
vcg::tri::TriMesh< std::vector<MyVertex>, std::vector<MyFace> , std::vector<MyEdge>  > *t_mesh;
MyMesh vcgMesh =MyMesh::MyMesh(*t_mesh);

但是编译器正在对不可行的元素进行替换

任何帮助如何创建它将不胜感激

编辑1
private:
// TriMesh cannot be copied. Use Append (see vcg/complex/append.h)


TriMesh operator =(const TriMesh &  /*m*/){assert(0);return TriMesh();}
    TriMesh(const TriMesh & ){}

};  // end class Mesh

最佳答案

由于给定的构造函数和赋值运算符是私有(private)的,因此只能在MyMesh或其 friend 类的成员函数中使用它们。您收到编译器错误,因为

MyMesh vcgMesh =MyMesh::MyMesh(*t_mesh);

不在MyMesh或其任何 friend 的成员函数中。

您将需要创建一个公共(public)构造函数或一些工厂类来解决您的问题。

10-06 09:35