我有一个class Foo
,其中包含一个unsigned long
和reference
到Bar class
的多重地图。
我收到错误“没有匹配函数来调用multimap等”。
我插入多地图有什么问题?
[标题文件]
class Foo
{
public:
Foo();
~Foo();
void set(const unsigned long var1, const Bar& var2);
private:
struct map_sort
{
bool operator()(const unsigned long& e1, const unsigned long& e2) const
{
return (e2 < e1);
}
};
std::multimap<unsigned long,Bar&, map_sort> m_map;
};
[来源文件]
void Foo::set(const unsigned long var1, const Bar& var2)
{
m_map.insert(var1,rtime); //<-- ERROR!!!!!!!!
}
答案 0 :(得分:1)
您声明多地图成员采用var fs = require('fs');
console.error(fs);
var text = fs.readFile('data.txt', 'utf8');
和unsigned long
Bar&
while,在源文件中
std::multimap<unsigned long,Bar&, map_sort> m_map;
您试图插入void Foo::set(const unsigned long var1, const Bar& var2)
{
m_map.insert(var1,rtime); //var1 is const here! (rtime is not declared but I assume you meant var2 - which is const, too)
}
和const unsigned long
,它们与上面声明的不同(它们是常量)。请注意,const Bar&
并不是真正的问题,因为它是按值复制的,因此,实际上,multimap会保留自己的变量版本和&#34; main&#34;一个人无法修改。
此外,请查看多地图const unsigned long
方法http://www.cplusplus.com/reference/map/multimap/insert/的文档。您应该使用insert
插入键值对:)
解决方案1:更改您的方法以采用非const参数:
std::pair
解决方案2:将地图更改为包含const值:
void set(unsigned long var1, Bar& var2);
工作示例:
std::multimap<const unsigned long, const Bar&, map_sort> m_map