hid_device.h中的错误C2664

时间:2012-07-16 14:44:02

标签: c++ visual-studio-2008 stderr hid c2664

std::string get_path( void ) { return m_devicePath; }

调试输出:

  

hid_device.h(37):错误C2664:>'std :: basic_string< _Elem,_Traits,_Ax> :: basic_string(std :: basic_string< _Elem,_Traits,_Ax> ::> _Has_debug_it)':无法将参数1从'unsigned long'转换为>'std :: basic_string< _Elem,_Traits,_Ax> :: _ Has_debug_it'          同          [              _Elem =炭,              _Traits =标准:: char_traits,              _AX =标准::分配器          ]          struct'std :: basic_string< _Elem,_Traits,_Ax> :: _ Has_debug_it'的构造方法被声明为'explicit'          同          [              _Elem =炭,              _Traits =标准:: char_traits,              _AX =标准::分配器          ]

1 个答案:

答案 0 :(得分:0)

  • 选项1:

错误包括。您应该在文件顶部有#include <string>,而不是#include <string.h>或任何其他变体。

  • 选项2:

m_devicePathunsigned long(怀疑),无法直接转换为std::string

使用std::to_string() (C ++ 11)

std::string get_path( void ) { return std::to_string(m_devicePath); }

stringstream (C ++ 03)unsigned long转换为std::string

std::string get_path( void ) { 
     std::stringstream ss;
     ss << m_devicePath;
     return ss.str(); 
}