隐藏错误C2664

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

调试输出:

hid_device.h(37):error C2664:>'std :: basic_string <_Elem,_Traits,_Ax> :: basic_string(std :: basic_string <_Elem,_Traits,_Ax> ::> _ Has_debug_it)':无法将参数1从'unsigned long'to>'std :: basic_string <_Elem,_Traits,_Ax> :: _ Has_debug_it'with [_Elem = char,_Traits = std :: char_traits,_Ax = std :: allocator] struct std :: basic_string的构造函数使用[_Elem = char,_Traits = std :: char_traits,_Ax = std :: allocator]将<_Elem,_Traits,_Ax> :: _ Has_debug_it'声明为'explicit'


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

  • 选项2:
  • 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 longstd::string

    std::string get_path( void ) { 
         std::stringstream ss;
         ss << m_devicePath;
         return ss.str(); 
    }
    
    链接地址: http://www.djcxy.com/p/68425.html

    上一篇: Error C2664 in hid

    下一篇: TCLAP issus with parsing std::wstring