Cpp删除的功能

时间:2019-01-26 20:11:40

标签: c++ class oop copy-constructor

最近,在尝试使用不久前已编辑过的类的副本构造函数时,出现了奇怪的错误提示。班级名称为Material,错误消息为

Error (active)  E1776   function "Material::Material(const Material &) throw()" (declared implicitly) cannot be referenced -- it is a deleted function  

我尝试了什么: 我试图寻找一个拷贝构造函数。没有任何定义。我在stackoverflow上搜索错误消息,并获得了有关ifstream的答案,那么我的问题与ifstream无关,所以那边的答案都没有帮助我。没有人真正解释过删除的功能是什么。 所以我尝试检查stackoverflow如何删除副本构造函数,再次看起来像这样。

现在我有点困惑,我不确定我是否在看东西,但我要求您的帮助。 这是h类文件:

class Material
{
private:
    std::unique_ptr<Texture>  m_texture;
    std::unique_ptr <glm::vec4>  m_color;
public:
    std::vector<IUniform*> uniforms;
    Shader shader;

    Material();
    Material(Shader& shader, IUniform ** uniforms, unsigned int uniforms_count,
    Texture * texture = nullptr, glm::vec4 * color = nullptr);
    Material(Shader& shader, std::vector<IUniform*> uniforms,
    Texture * texture = nullptr, glm::vec4 * color = nullptr);
    ~Material();
    void Bind();
    void Unbind();

};

评论任何功能的来源,我只是想保持可读性。

我希望复制构造函数像复制构造函数一样工作。 尝试使用它时出现错误。

0 个答案:

没有答案