我正在使用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发布于 2014-02-04 23:14:07
因为给定的构造函数和赋值运算符是私有的,所以只能在MyMesh或其友类的成员函数中使用它们。你得到一个编译器错误,因为
MyMesh vcgMesh =MyMesh::MyMesh(*t_mesh);不在MyMesh或其任何朋友的成员函数中。
您需要创建一个公共构造函数或某个工厂类来解决您的问题。
发布于 2014-02-04 23:15:49
您不能在类外调用它们,因为您已将它们设置为私有。
听起来你不想限制访问,所以只需要将它们公开:
public:
MyMesh(const TriMesh &mesh);
MyMesh operator= (const TriMesh &mesh);并提供适当的实现。
https://stackoverflow.com/questions/21556129
复制相似问题