Vector |引用的构造函数错误C2582:'operator ='功能不可用

我正在尝试将vecs向量的引用传递给我的网格构造函数 . 我得到以下内容:

error c2582 operator function is unavailable in...

我不想要这些vecs的副本,并尝试通过const和指针都没有成功 . vecs std :: vector不包含此字段,也没有类似的构造函数 . 我正在使用Visual Studio 2013.任何帮助表示赞赏 .

//////主要

myVecs = ptData.getVecs();//this function returns pts from: std::vector<Vec3*>& pts;
dMesh mesh = dMesh(myVecs);

//////派生的网格类 Headers /////

#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"

回答(1)

3 years ago

由于我无法在其他任何地方找到这个直接的例子,我决定发布工作实现以供参考 . 我不会声称这是理想的,但目前,这提供了我期望的功能 . 如果有建议的改进,请随时发表评论:

//基类 Headers :

`
#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){
}`

//派生类 Headers :

`
#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();
}`