【发布时间】:2021-10-13 19:30:32
【问题描述】:
我声明了一个流类,但是在定义它的成员函数时,我想往私有成员unordered_map中插入东西时总是报错,请问如何解决? 流.h
#include <unordered_map>
class stream
{
private:
std::unordered_map<size_t, std::string> word_count;
public:
void reassemblestream() const;
};
流.cpp
#include"stream.h"
using namespace std;
void stream::reassemblestream() const
{
static size_t a = 1;
string fe = "dfi";
word_count.insert({ 1,"dfs" });
word_count.insert(make_pair(a, fe));
}
word_count.insert 函数的 stream.cpp 中发生错误。
这是错误信息:
E1087 没有重载函数“std::unordered_map<_kty _ty _hasher _keyeq _alloc>::insert [其中 _Kty=size_t, _Ty=std::string, _Hasher=std:: hash
, _Keyeq=std::equal_to , _Alloc=std::allocator >]" 实例(对象包含阻止匹配的类型限定符)
我使用 Visual Studio 2019。
【问题讨论】:
-
您标记了成员函数
const,但随后您尝试修改该对象。 -
你可以制作
word_countmutable,但这违背了目的 -
@molbdnilo 谢谢,我太傻了,你是对的。
-
你不傻,这是一个模糊和误导性的错误信息。 (它看起来像一个 IntelliSense 消息,这些消息通常不是很好。如果你编译代码,你可能会得到更好的消息。)
-
@molbdnilo 是的,我会的,再次感谢。