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 =标准::分配器 ]
答案 0 :(得分:0)
错误包括。您应该在文件顶部有#include <string>
,而不是#include <string.h>
或任何其他变体。
m_devicePath
是unsigned 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();
}