我尝试了多种方法将内容插入到一个map中,其中插入一对数据的方法可以正常工作,代码如下:
type insert(){
map<int,MyClass> myMap;
MyClass myObj(parameter);
myMap.insert(pair<int,MyClass>(0,myObj));
...
return myMap;
}
然而,我决定采用另一种方式,基本上如下:
map[key] = value;
而且,它看起来像这样:
type insert(){
map<int,MyClass> myMap;
MyClass myObj(parameter);
myMap[i] = myObj;
....
return myMap;
}
编译器会给出错误提示:“调用myObj::myObj()的函数无匹配项,候选项为:”,并且这个函数是我自己定义的构造函数。
我的猜想是,当使用索引方式将对象转换为映射表时,如果传递的是一个对象,则会自动调用其没有参数的默认构造函数。但是,由于我已经有了一个带参数的自定义构造函数,因此编译器会报错。因此,我尝试创建一个值为对象的映射表,并且该对象只有默认构造函数。这样,编译器就不会抱怨了。
我的问题是,我没有找到任何文件证实我的想法。如果我的想法是正确的,为什么将值为对象的映射表调用默认构造函数而不是现有的构造函数呢?