我正在使用VCG库 我有一个私有构造函数,因为Trimesh无法复制到我的头文件MyProcessing.h
中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);
但是编译器正在使用无法访问的元素
任何帮助如何创建它将不胜感激
EDIT1
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
答案 0 :(得分:2)
因为给定的构造函数和赋值运算符是私有的,所以只能在MyMesh
或其朋友类的成员函数中使用它们。您收到编译器错误,因为
MyMesh vcgMesh =MyMesh::MyMesh(*t_mesh);
不属于MyMesh
或其任何朋友的成员函数。
您需要创建一个公共构造函数或一些工厂类来解决您的问题。
答案 1 :(得分:1)
你不能在课堂外打电话给他们,因为你已经把它们变成了私人。
听起来你不想限制访问,所以只需将它们公开:
public:
MyMesh(const TriMesh &mesh);
MyMesh operator= (const TriMesh &mesh);
并提供适当的实施。