我有以下结构。
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
作为值。它将使用默认构造函数创建此对象。