c – 为什么在地图中存储时需要默认构造函数?

c – 为什么在地图中存储时需要默认构造函数?,第1张

概述我收到错误: error: no matching function for call to 'A::A()'note: candidates are: A::A(const A&)note: A::A(const std::string&, size_t) 由此: #include <map>#include <string>using std::map 我收到错误:
error: no matching function for call to 'A::A()'note: candIDates are: A::A(const A&)note:                 A::A(const std::string&,size_t)

由此:

#include <map>#include <string>using std::map;using std::string;class A {public:    string path;    size_t size;    A (const string& p,size_t s) : path(p),size(s) { }    A (const A& f) : path(f.path),size(f.size) { }    A& operator=(const A& rhs) {        path = rhs.path;        size = rhs.size;        return *this;    }};int main(int argc,char **argv){    map<string,A> mymap;    A a("world",1);    mymap["hello"] = a;      // <----- here    A b(mymap["hello"]);     // <----- and here}

请告诉我为什么代码想要一个没有参数的构造函数.

解决方法 mymap [“hello”]可以尝试创建一个值初始化的A,因此需要一个默认的构造函数.

如果您使用类型T作为映射值(并计划通过operator []访问值),则它需要是默认构造的 – 即您需要一个无参数(默认)构造函数.如果找不到提供密钥的值,则地图上的operator []将对映射值进行值初始化.

总结

以上是内存溢出为你收集整理的c – 为什么在地图中存储时需要默认构造函数?全部内容,希望文章能够帮你解决c – 为什么在地图中存储时需要默认构造函数?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1234523.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存