我正在尝试使用unique_ptr来管理我的记忆,而VS2013似乎在给我带来麻烦,我认为它不应该.
似乎编译器无论出于什么原因试图访问已删除的拷贝构造函数,而它真的应该没有理由这样做.
这是我的一个类看起来像:
class Mesh
{
public:
Mesh(oglplus::Program* program, const std::vector<Vertex>& vertices,
const std::vector<GLuint>& indices);
void draw();
private:
const oglplus::Program* _program;
std::vector<Vertex> _vertices;
std::vector<GLuint> _indices;
oglplus::Buffer _faceBuffer;
oglplus::Buffer _vertexBuffer;
oglplus::VertexArray _vao;
};
class Model
{
public:
Model(std::string filename, oglplus::Program* program);
void draw();
private:
const oglplus::Program* _program;
std::vector<std::unique_ptr<Mesh>> _meshes;
};
Run Code Online (Sandbox Code Playgroud)
问题出在线上
std::vector<std::unique_ptr<Mesh>> _meshes;
Run Code Online (Sandbox Code Playgroud)
它开始喷出像这样的东西
2>c:\program files (x86)\microsoft visual studio 12.0\vc\include\xmemory0(593): error C2280: 'std::unique_ptr<Model::Mesh,std::default_delete<_Ty>>::unique_ptr(const std::unique_ptr<_Ty,std::default_delete<_Ty>> &)' : attempting to reference a deleted function
2> with
2> [
2> _Ty=Model::Mesh
2> ]
2> …Run Code Online (Sandbox Code Playgroud)