我有以下结构。

struct ShaderObject
{
    const GLchar* File;
    ShaderType Type;
    GLuint Shader;
    ShaderObject(const GLchar* File, ShaderType Type);
};


和这种类型的地图。

typedef map<string, ShaderObject> Shaders;


编译器给我一个错误,链接到map的实现。

 Error 1 error C2512: 'ShaderObject::ShaderObject': No appropriate default constructor
 available c:\program files (x86)\microsoft visual studio 11.0\vc\include\map 198 1


我不明白这个错误。我该如何解决?因为我以前从未遇到过这样的错误并且无法解释,所以我不确定您需要哪些信息。请随时询问详细信息!非常感谢!

最佳答案

如果要将其放在ShaderObject中,则需要为std::map提供默认的构造函数(可以无参数调用的构造函数)。原因是,如果对operator[]使用map作为不存在的键,它将自动插入该键和新的ShaderObject作为值。它将使用默认构造函数创建此对象。

10-06 04:11