说我有这样的东西:
std::unordered_map<std::string, std::string> *map;
作为字段。我想写一个像这样的函数:
void myFunc(std::string& s, std::string& s2){
map->insert(std::make_pair(s, s2));
}
我一生无法按照这些原则进行编译。很高兴发布更多代码。但是我已经将地图类型从字符串更改为整数,并且这没问题。谢谢!
答案 0 :(得分:0)
您为什么使用指向地图的指针?我注意到了一些奇怪的问题。确保实际创建了地图。但是以下方法有效(无指针):
#include <iostream>
#include <memory>
#include <unordered_map>
#include <string>
using namespace std;
class Test
{
public:
explicit Test() { }
inline void myFunc(const string& s, const string& s2) {
map.insert(make_pair<string, string>(s.c_str(), s2.c_str()));
}
inline void Print() const {
for (const auto& entry : map)
cout << entry.first << ", " << entry.second << endl;
}
private:
unordered_map<string, string> map;
};
int main()
{
unique_ptr<Test> test = make_unique<Test>();
test->myFunc("Key", "Value");
test->Print();
getchar();
}