我正在尝试将vecs向量的引用传递给我的网格构造函数。我得到以下内容:
error c2582 operator function is unavailable in...
我不想要这些vecs的副本,并尝试通过const和amp;和指针没有成功。 vecs std :: vector不包含此字段,也没有类似的构造函数。我正在使用Visual Studio 2013.感谢任何帮助。
//////主要
myVecs = ptData.getVecs();//this function returns pts from: std::vector<Vec3*>& pts;
dMesh mesh = dMesh(myVecs);
//////派生的网格类标题/////
#include <isostream>
#include <vector>
#include "BaseMesh.h"
class dMesh : public BaseMesh {
private:
void init();
std::vector <Vec3*>& vecs;
public:
dMesh();
dMesh(std::vector<Vec3*>& vecs);
};
////。CPP
dMesh::dMesh(std::vector<Vec3*>& vecs):
vecs(vecs){
init();
}
void dMesh::init();///"use data from vector"
答案 0 :(得分:0)
由于我无法在其他任何地方找到这方面的直接示例,我已决定发布工作实施以供参考。我不会声称这是理想的,但目前,这提供了我期望的功能。如果有建议的改进,请随时发表评论:
//基类标题:
`
#include <vector>
class BaseMesh{
pulbic:
std::vector<Vec3*>* vecs;
BaseMesh();
BaseMesh(std::vector<Vec3*>* vecs);
};`
//基类构造函数:
`
BaseShape::BaseShape();
BaseShape::BaseShape(std::vector<ntVec3*>* vecs = nullptr):
vecs(vecs){
}`
//派生类标题:
`
#include <vector>
#include "BaseMesh.h"
class dMesh : public BaseMesh {
private:
void init();
public:
dMesh();
dMesh(std::vector<Vec3*>* vecs);
};`
//派生网格构造函数:
`
dMesh::dMesh(){}
dMesh::dMesh(std::vector<Vec3*>* vecs):
BaseShape(vecs){
init();
}`