gpt4 book ai didi

c++ - 使用 struct 插入 std::map 失败并出现构造函数错误

转载 作者:行者123 更新时间:2023-11-27 23:10:37 25 4
gpt4 key购买 nike

我有以下...

struct MessageLetter{
char letter;
int count;
MessageLetter(char letter, int freq)
: letter(letter), count(freq)
{}
};
...
std::map<char, MessageLetter> lList;
...
MessageLetter m = MessageLetter(letter,1);
lList[letter] = m;

当我尝试编译时,我得到...

no matching constructor for initialization of 'MessageLetter'
::new ((void*)__p) _Tp();

必须是简单的任何人有想法吗?

最佳答案

lList[letter] = m;

这一行实际上默认构造了一个 MessageLetter 然后通过引用返回它,然后您将 m 分配给它,调用 operator=

这意味着 MessageLetter 需要一个默认构造函数,如下所示:

MessageLetter() {}

或使用 C++11:

MessageLetter()=default;

如果您实际上不打算在其中做任何事情。

您也可以不用默认构造使用 std::map::insert

lList.insert(std::make_pair(letter), m));

或用 c++11 放置:

lList.emplace(letter, { letter, 1 });

http://en.cppreference.com/w/cpp/container/map/insert

http://en.cppreference.com/w/cpp/container/map/emplace

http://en.cppreference.com/w/cpp/container/map/operator_at

关于c++ - 使用 struct 插入 std::map 失败并出现构造函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20585531/

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