最近,在尝试使用不久前已编辑过的类的副本构造函数时,出现了奇怪的错误提示。班级名称为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();
};
评论任何功能的来源,我只是想保持可读性。
我希望复制构造函数像复制构造函数一样工作。 尝试使用它时出现错误。