gpt4 book ai didi

c++ - 为什么存储在 map 中时需要默认构造函数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:09:56 27 4
gpt4 key购买 nike

我收到错误:

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
}

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

最佳答案

因为 map 需要 DefaultConstructible 值,因为当使用下标运算符并且找不到键时,它会将其映射到默认构造值。

关于c++ - 为什么存储在 map 中时需要默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14164223/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com