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

时间:2014-04-08 02:43:50

标签: c++ constructor reference stdvector

我正在尝试将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"

1 个答案:

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