今天在写程序时有一个类似以下的编译错误,
no matching function for call to 'AAAA:AAAA()'
虽然一看就知道是因为没有定义默认构造函数造成的。
但是因为是故意没有定义默认构造函数以免误用,所以还是需要找一下到底是哪里需要默认构造函数。
最后定位到了 unordered_map. 该map以AAAA作为value。
需要AAAA的默认构造函数是因为用到了 map 的下标操作 []。
map[key] = value 操作定义为:
如果没有查找到键为 key 的元素,则创建一个新的pair,键值为key,而值采用值初始化。
将该pair插入到map中后,再读取该pair并将值设为value。
所以,如果没有理解错误,原因就是没有默认构造函数的话,就没有办法进行值初始化。。。吧。。