你好伟大的 StackOverflow 社区!我正在制作一些 C++,但在std::map.
这是 2 个映射,将类似 ID 存储unsigned int为键,将另一个对象存储为值:
std::map<unsigned int, FIFO> _fifos;
std::map<unsigned int, Kitchen> _kitchens;
Run Code Online (Sandbox Code Playgroud)
两个地图都private在一个类中,我在该类的public方法中插入这样的:
FIFO newFIFO(_internalCount);
Kitchen newKitchen(_args, newFIFO);
_kitchens.insert(std::make_pair(_internalCount, newKitchen));
_fifos.insert(std::make_pair(_internalCount, newFIFO));
Run Code Online (Sandbox Code Playgroud)
这里开始麻烦。
我的编辑器(VSCode)和编译器(g++)似乎都接受_fifos.insert()但不接受_kitchens.insert().
VSCode 说:
no instance of overloaded function "std::map<_Key, _Tp, _Compare, _Alloc>::insert [with _Key=unsigned int, _Tp=Kitchen, _Compare=std::less<unsigned int>, _Alloc=std::allocator<std::pair<const unsigned int, Kitchen>>]" matches the argument list..."
Run Code Online (Sandbox Code Playgroud)
虽然 g++ 首先显示了这一点,但在列出了 C++ 深处的一堆错误之后(特别是在 stl_pair.h 中):
error: no matching function for call …Run Code Online (Sandbox Code Playgroud)