为什么我不能插入如下所示?
#include <map>
struct something {
} some_object;
typedef std::map<std::string, something*> list;
typedef std::pair<std::string, something*> pair;
int main()
{
list l;
pair p("abc", &some_object); // working fine!!!
l.insert(p); // 17 errors
return 0;
}
Visual Studio给了我很多错误,我对它们一无所知。第一个是:
error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)' : could not deduce template argument for 'const std::_Tree<_Traits> &' from 'const std::string'
我可以发布更多但我不想在这里发送垃圾邮件。非常感谢你的帮助。
答案 0 :(得分:3)
你需要
#include <string>
答案 1 :(得分:1)
我会改变这一行:
typedef std::pair<std::string, something*> pair;
您正在转发实施细节。你确定这个库的未来版本总是如此吗?像这样紧密地耦合你的代码是一个坏主意。
试试这个:
typedef list::value_type pair;
PS。 'list'不是我放在全局命名空间中的类型名称的首选。将其放在您自己的命名空间中或称之为“MyList”。