no known conversion from ‘const char [4]‘ to ‘std::__cxx11::string &‘ (aka ‘basic_string<char…引用传参问题

本文探讨了C++中构造函数使用普通引用作为参数时出现的问题,特别是当尝试传递字面值时发生的编译错误,并给出了正确的解决方案。

今天测试一段代码时遇到报错:
qt错误信息
**重点是这句“no known conversion from ‘const char [[4]]’ to ‘std::__cxx11::string &’ (aka ‘basic_string &’) for 1st argument……”

代码如下:**

h文件中声明类如下:

class Person 
{
public:
    Person( string &name, int age);
    virtual ~Person();
    virtual void func();

private:
    PersonImpl *mPersonImpl;
};

man函数中:

int main()
{
    Person *people = new Person("Tom", 12);
    return 0;
}

报错原因:

把函数不会改变的形参定义为(普通的)引用【应为const引用】是一种比较常见的错误。

导致[1]:

1.误导函数可以修改它的实参的值;
2.极大限制函数所能接受的实参类型【不再能接受const对象、字面值、需要类型转换的对象】

解决:

    Person( string &name, int age);
    Person(const string &name, int age); //修改为常引用

或者:

    string str("Tom");
    Person *people = new Person(str, 12);   //传string对象,而非字面量

参考文献:

[1] https://blog.youkuaiyun.com/goldcarpenter/article/details/81975241

49725@DESKTOP-CB4LRLP /cygdrive/f/S $ g++ -o screensaver_clock F:/S/screensaver_clock.cpp -lgdiplus -mwindows F:/S/screensaver_clock.cpp: In function 'void SetFontSize(HWND)': F:/S/screensaver_clock.cpp:21:54: error: no matching function for call to 'std::basic_ofstream<wchar_t>::open(std::__cxx11::wstring&, const openmode&)' logFile.open(g_runtimeFilePath, std::ios::app); ^ In file included from F:/S/screensaver_clock.cpp:2: D:/wingcc/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/fstream:851:7: note: candidate: 'void std::basic_ofstream<_CharT, _Traits>::open(const char*, std::ios_base::openmode) [with _CharT = wchar_t; _Traits = std::char_traits<wchar_t>; std::ios_base::openmode = std::_Ios_Openmode]' open(const char* __s, ios_base::openmode __mode = ios_base::out) ^~~~ D:/wingcc/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/fstream:851:7: note: no known conversion for argument 1 from 'std::__cxx11::wstring' {aka 'std::__cxx11::basic_string<wchar_t>'} to 'const char*' D:/wingcc/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/fstream:871:7: note: candidate: 'void std::basic_ofstream<_CharT, _Traits>::open(const string&, std::ios_base::openmode) [with _CharT = wchar_t; _Traits = std::char_traits<wchar_t>; std::__cxx11::string = std::__cxx11::basic_string<char>; std::ios_base::openmode = std::_Ios_Openmode]' open(const std::string& __s, ios_base::openmode __mode = ios_base::out) ^~~~ D:/wingcc/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/fstream:871:7: note: no known conversion for argument 1 from 'std::__cxx11::wstring' {aka 'std::__cxx11::basic_string<wchar_t>'} to 'const string&' {aka 'const std::__cxx11::basic_string<char>&'} F:/S/screensaver_clock.cpp: In function 'void SetTitle(HWND)': F:/S/screensaver_clock.cpp:32:54: error: no matching function for call to 'std::basic_ofstream<wchar_t>::open(std::__cxx11::wstring&, const openmode&)' logFile.open(g_runtimeFilePath, std::ios::app); ^ In file included from F:/S/screensaver_clock.cpp:2: D:/wingcc/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/fstream:851:7: note: candidate: 'void std::basic_ofstream<_CharT, _Traits>::open(const char*, std::ios_base::openmode) [with _CharT = wchar_t; _Traits = std::char_traits<wchar_t>; std::ios_base::openmode = std::_Ios_Openmode]' open(const char* __s, ios_base::openmode __mode = ios_base::out) ^~~~ D:/wingcc/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/fstream:851:7: note: no known conversion for argument 1 from 'std::__cxx11::wstring' {aka 'std::__cxx11::basic_string<wchar_t>'} to 'const char*' D:/wingcc/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/fstream:871:7: note: candidate: 'void std::basic_ofstream<_CharT, _Traits>::open(const string&, std::ios_base::openmode) [with _CharT = wchar_t; _Traits = std::char_traits<wchar_t>; std::__cxx11::string = std::__cxx11::basic_string<char>; std::ios_base::openmode = std::_Ios_Openmode]' open(const std::string& __s, ios_base::openmode __mode = ios_base::out) ^~~~ D:/wingcc/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/fstream:871:7: note: no known conversion for argument 1 from 'std::__cxx11::wstring' {aka 'std::__cxx11::basic_string<wchar_t>'} to 'const string&' {aka 'const std::__cxx11::basic_string<char>&'} F:/S/screensaver_clock.cpp: In function 'void SetCountdownDate(HWND)': F:/S/screensaver_clock.cpp:43:54: error: no matching function for call to 'std::basic_ofstream<wchar_t>::open(std::__cxx11::wstring&, const openmode&)' logFile.open(g_runtimeFilePath, std::ios::app); ^ In file included from F:/S/screensaver_clock.cpp:2: D:/wingcc/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/fstream:851:7: note: candidate: 'void std::basic_ofstream<_CharT, _Traits>::open(const char*, std::ios_base::openmode) [with _CharT = wchar_t; _Traits = std::char_traits<wchar_t>; std::ios_base::openmode = std::_Ios_Openmode]' open(const char* __s, ios_base::openmode __mode = ios_base::out) ^~~~ D:/wingcc/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/fstream:851:7: note: no known conversion for argument 1 from 'std::__cxx11::wstring' {aka 'std::__cxx11::basic_string<wchar_t>'} to 'const char*' D:/wingcc/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/fstream:871:7: note: candidate: 'void std::basic_ofstream<_CharT, _Traits>::open(const string&, std::ios_base::openmode) [with _CharT = wchar_t; _Traits = std::char_traits<wchar_t>; std::__cxx11::string = std::__cxx11::basic_string<char>; std::ios_base::openmode = std::_Ios_Openmode]' open(const std::string& __s, ios_base::openmode __mode = ios_base::out) ^~~~ D:/wingcc/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/fstream:871:7: note: no known conversion for argument 1 from 'std::__cxx11::wstring' {aka 'std::__cxx11::basic_string<wchar_t>'} to 'const string&' {aka 'const std::__cxx11::basic_string<char>&'}报错,优化代码,代码全输出
05-13
usr/include/c++/11/bits/basic_string.h:448:34: note: no known conversion for argument 1 from ‘uint64_t’ {aka ‘long unsigned int’} to ‘const std::allocator<char>’ 448 | basic_string(const _Alloc& __a) _GLIBCXX_NOEXCEPT | ~~~~~~~~~~~~~~^~~ /usr/include/c++/11/bits/basic_string.h:439:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string() [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 439 | basic_string() | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:439:7: note: candidate expects 0 arguments, 1 provided In file included from amain.cpp:21: modbus_parser.h:160:21: error: no matching function for call to ‘std::__cxx11::basic_string<char>::basic_string(double&)’ 160 | value = static_cast<T>(double_val); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/11/string:55, from /usr/include/c++/11/bits/locale_classes.h:40, from /usr/include/c++/11/bits/ios_base.h:41, from /usr/include/c++/11/ios:42, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from amain.cpp:1: /usr/include/c++/11/bits/basic_string.h:638:9: note: candidate: ‘template<class _InputIterator, class> std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(_InputIterator, _InputIterator, const _Alloc&) [with _InputIterator = _InputIterator; <template-parameter-2-2> = <template-parameter-1-2>; _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 638 | basic_string(_InputIterator __beg, _InputIterator __end, | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:638:9: note: template argument deduction/substitution failed: In file included from amain.cpp:21: modbus_parser.h:160:21: note: candidate expects 3 arguments, 1 provided 160 | value = static_cast<T>(double_val); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/11/string:55, from /usr/include/c++/11/bits/locale_classes.h:40, from /usr/include/c++/11/bits/ios_base.h:41, from /usr/include/c++/11/ios:42, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from amain.cpp:1: /usr/include/c++/11/bits/basic_string.h:600:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&&, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 600 | basic_string(basic_string&& __str, const _Alloc& __a) | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:600:7: note: candidate expects 2 arguments, 1 provided /usr/include/c++/11/bits/basic_string.h:596:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 596 | basic_string(const basic_string& __str, const _Alloc& __a) | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:596:7: note: candidate expects 2 arguments, 1 provided /usr/include/c++/11/bits/basic_string.h:592:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::initializer_list<_Tp>, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 592 | basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()) | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:592:45: note: no known conversion for argument 1 from ‘double’ to ‘std::initializer_list<char>’ 592 | basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()) | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~ /usr/include/c++/11/bits/basic_string.h:565:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 565 | basic_string(basic_string&& __str) noexcept | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:565:35: note: no known conversion for argument 1 from ‘double’ to ‘std::__cxx11::basic_string<char>&&’ 565 | basic_string(basic_string&& __str) noexcept | ~~~~~~~~~~~~~~~^~~~~ /usr/include/c++/11/bits/basic_string.h:553:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type, _CharT, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]’ 553 | basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()) | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:553:7: note: candidate expects 3 arguments, 1 provided /usr/include/c++/11/bits/basic_string.h:533:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>’ 533 | basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()) | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:533:34: note: no known conversion for argument 1 from ‘double’ to ‘const char*’ 533 | basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()) | ~~~~~~~~~~~~~~^~~ /usr/include/c++/11/bits/basic_string.h:518:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]’ 518 | basic_string(const _CharT* __s, size_type __n, | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:518:7: note: candidate expects 3 arguments, 1 provided /usr/include/c++/11/bits/basic_string.h:500:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type, std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]’ 500 | basic_string(const basic_string& __str, size_type __pos, | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:500:7: note: candidate expects 4 arguments, 1 provided /usr/include/c++/11/bits/basic_string.h:484:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type, std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]’ 484 | basic_string(const basic_string& __str, size_type __pos, | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:484:7: note: candidate expects 3 arguments, 1 provided /usr/include/c++/11/bits/basic_string.h:469:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]’ 469 | basic_string(const basic_string& __str, size_type __pos, | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:469:7: note: candidate expects 3 arguments, 1 provided /usr/include/c++/11/bits/basic_string.h:456:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 456 | basic_string(const basic_string& __str) | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:456:40: note: no known conversion for argument 1 from ‘double’ to ‘const std::__cxx11::basic_string<char>&’ 456 | basic_string(const basic_string& __str) | ~~~~~~~~~~~~~~~~~~~~^~~~~ /usr/include/c++/11/bits/basic_string.h:448:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 448 | basic_string(const _Alloc& __a) _GLIBCXX_NOEXCEPT | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:448:34: note: no known conversion for argument 1 from ‘double’ to ‘const std::allocator<char>&’ 448 | basic_string(const _Alloc& __a) _GLIBCXX_NOEXCEPT | ~~~~~~~~~~~~~~^~~ /usr/include/c++/11/bits/basic_string.h:439:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string() [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 439 | basic_string() | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:439:7: note: candidate expects 0 arguments, 1 provided In file included from amain.cpp:21: modbus_parser.h:185:21: error: no matching function for call to ‘std::__cxx11::basic_string<char>::basic_string(__gnu_cxx::__alloc_traits<std::allocator<short unsigned int>, short unsigned int>::value_type&)’ 185 | value = static_cast<T>(processed_registers[0]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/11/string:55, from /usr/include/c++/11/bits/locale_classes.h:40, from /usr/include/c++/11/bits/ios_base.h:41, from /usr/include/c++/11/ios:42, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from amain.cpp:1: /usr/include/c++/11/bits/basic_string.h:638:9: note: candidate: ‘template<class _InputIterator, class> std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(_InputIterator, _InputIterator, const _Alloc&) [with _InputIterator = _InputIterator; <template-parameter-2-2> = <template-parameter-1-2>; _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 638 | basic_string(_InputIterator __beg, _InputIterator __end, | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:638:9: note: template argument deduction/substitution failed: In file included from amain.cpp:21: modbus_parser.h:185:21: note: candidate expects 3 arguments, 1 provided 185 | value = static_cast<T>(processed_registers[0]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/11/string:55, from /usr/include/c++/11/bits/locale_classes.h:40, from /usr/include/c++/11/bits/ios_base.h:41, from /usr/include/c++/11/ios:42, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from amain.cpp:1: /usr/include/c++/11/bits/basic_string.h:600:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&&, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 600 | basic_string(basic_string&& __str, const _Alloc& __a) | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:600:7: note: candidate expects 2 arguments, 1 provided /usr/include/c++/11/bits/basic_string.h:596:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 596 | basic_string(const basic_string& __str, const _Alloc& __a) | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:596:7: note: candidate expects 2 arguments, 1 provided /usr/include/c++/11/bits/basic_string.h:592:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::initializer_list<_Tp>, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 592 | basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()) | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:592:45: note: no known conversion for argument 1 from ‘__gnu_cxx::__alloc_traits<std::allocator<short unsigned int>, short unsigned int>::value_type’ {aka ‘short unsigned int’} to ‘std::initializer_list<char>’ 592 | basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()) | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~ /usr/include/c++/11/bits/basic_string.h:565:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 565 | basic_string(basic_string&& __str) noexcept | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:565:35: note: no known conversion for argument 1 from ‘__gnu_cxx::__alloc_traits<std::allocator<short unsigned int>, short unsigned int>::value_type’ {aka ‘short unsigned int’} to ‘std::__cxx11::basic_string<char>&&’ 565 | basic_string(basic_string&& __str) noexcept | ~~~~~~~~~~~~~~~^~~~~ /usr/include/c++/11/bits/basic_string.h:553:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type, _CharT, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]’ 553 | basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()) | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:553:7: note: candidate expects 3 arguments, 1 provided /usr/include/c++/11/bits/basic_string.h:533:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>’ (near match) 533 | basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()) | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:533:7: note: conversion of argument 1 would be ill-formed: In file included from amain.cpp:21: modbus_parser.h:185:21: error: invalid conversion from ‘__gnu_cxx::__alloc_traits<std::allocator<short unsigned int>, short unsigned int>::value_type’ {aka ‘short unsigned int’} to ‘const char*’ [-fpermissive] 185 | value = static_cast<T>(processed_registers[0]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | __gnu_cxx::__alloc_traits<std::allocator<short unsigned int>, short unsigned int>::value_type {aka short unsigned int}
09-19
/usr/include/c++/11/bits/basic_string.h:553:7: note: candidate expects 3 arguments, 1 provided /usr/include/c++/11/bits/basic_string.h:533:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>’ (near match) 533 | basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()) | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:533:7: note: conversion of argument 1 would be ill-formed: In file included from amain.cpp:17: modbus_parser.h:185:21: error: invalid conversion from ‘__gnu_cxx::__alloc_traits<std::allocator<short unsigned int>, short unsigned int>::value_type’ {aka ‘short unsigned int’} to ‘const char*’ [-fpermissive] 185 | value = static_cast<T>(processed_registers[0]); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | __gnu_cxx::__alloc_traits<std::allocator<short unsigned int>, short unsigned int>::value_type {aka short unsigned int} In file included from /usr/include/c++/11/string:55, from /usr/include/c++/11/bits/locale_classes.h:40, from /usr/include/c++/11/bits/ios_base.h:41, from /usr/include/c++/11/ios:42, from /usr/include/c++/11/ostream:38, from /usr/include/c++/11/iostream:39, from amain.cpp:1: /usr/include/c++/11/bits/basic_string.h:518:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]’ 518 | basic_string(const _CharT* __s, size_type __n, | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:518:7: note: candidate expects 3 arguments, 1 provided /usr/include/c++/11/bits/basic_string.h:500:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type, std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]’ 500 | basic_string(const basic_string& __str, size_type __pos, | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:500:7: note: candidate expects 4 arguments, 1 provided /usr/include/c++/11/bits/basic_string.h:484:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type, std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]’ 484 | basic_string(const basic_string& __str, size_type __pos, | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:484:7: note: candidate expects 3 arguments, 1 provided /usr/include/c++/11/bits/basic_string.h:469:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]’ 469 | basic_string(const basic_string& __str, size_type __pos, | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:469:7: note: candidate expects 3 arguments, 1 provided /usr/include/c++/11/bits/basic_string.h:456:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 456 | basic_string(const basic_string& __str) | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:456:40: note: no known conversion for argument 1 from ‘__gnu_cxx::__alloc_traits<std::allocator<short unsigned int>, short unsigned int>::value_type’ {aka ‘short unsigned int’} to ‘const std::__cxx11::basic_string<char>&’ 456 | basic_string(const basic_string& __str) | ~~~~~~~~~~~~~~~~~~~~^~~~~ /usr/include/c++/11/bits/basic_string.h:448:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 448 | basic_string(const _Alloc& __a) _GLIBCXX_NOEXCEPT | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:448:34: note: no known conversion for argument 1 from ‘__gnu_cxx::__alloc_traits<std::allocator<short unsigned int>, short unsigned int>::value_type’ {aka ‘short unsigned int’} to ‘const std::allocator<char>&’ 448 | basic_string(const _Alloc& __a) _GLIBCXX_NOEXCEPT | ~~~~~~~~~~~~~~^~~ /usr/include/c++/11/bits/basic_string.h:439:7: note: candidate: ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string() [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ 439 | basic_string() | ^~~~~~~~~~~~ /usr/include/c++/11/bits/basic_string.h:439:7: note: candidate expects 0 arguments, 1 provided
09-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值