2013-10-19 55 views
3

今天我想尝试把我的项目从Visual C++ 2010年的Visual C++ 2013年不能从int转换参数1为int &&错误

我得到在Visual C++ 2013,其编译的时候我没有得到这个错误与2010年版本。

//somewhere in the SimpleObject_list class 
std::unordered_map<std::string, SimpleObject *> Object_list; 


//method which is giving me the error 
void SimpleObject_list::Add(const char *Object_name, SimpleObject * Object_pointer){ 
    cout << "SimpleObject listed as: " << Object_name << endl; 
    Object_list.insert(std::make_pair<std::string,SimpleObject *>(Object_name, Object_pointer)); 
} 

的错误是:

error C2664: 'std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,SimpleObject *> std::make_pair<std::string,SimpleObject*>(_Ty1 &&,_Ty2 &&)' : cannot convert argument 2 from 'SimpleObject *' to 'SimpleObject *&&' 

我究竟做错了什么?为什么我在vC++ 2010中没有得到任何错误?

感谢

回答

7

变化

Object_list.insert(std::make_pair<std::string,SimpleObject *>(Object_name, Object_pointer)); 

Object_list.insert(std::make_pair(Object_name, Object_pointer)); 
+0

为了更好地说明为什么这需要看这里:http://stackoverflow.com/questions/9641960/c11-make -pair-with-specified-template-parameters-doesnt-compile – drescherjm

+0

它的工作原理,谢谢。 – Marco

+0

@Marco在你最后的评论前几​​秒钟看到我的评论。 – drescherjm

相关问题