我正在使用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)构造函数或一些工厂类来解决您的问题。