注释一行使代码工作,而没有它,代码不起作用

Comment a line make the code works, while without it the code doesn't work

本文关键字:代码 不起作用 工作 一行 注释      更新时间:2023-10-16

我在一个名为nmb的命名空间下创建了一个复数类

这是代码:

namespace nmb // nmb stands for number
{
template<class T>
class complex
{
public:
// CONSTRUCTORS
explicit complex() { }
explicit complex(const T &imaginary, const T &real) : _imaginary(imaginary), _real(real) { }
explicit complex(const complex &_complex) { *this = _complex;}
// DESTRUCTOR
~complex() { } // useless, there aren't pointers, but for make it more clear
// METHODS
inline T real() const {return _real;}
inline T imaginary() const {return _imaginary;}
inline T complex_abs() const {return sqrt( pow(_imaginary,2) + pow(_real, 2)); } /* the absolute value of a complex num
                          is (a^2 + b^2)^1/2*/
// OPERATOR OVERLADING
inline bool operator==(const complex &Number) { return ((_imaginary==Number._imaginary) && (_real == Number._real));}
inline bool operator!=(const complex &Number) { return !(*this == Number); }
inline friend std::ostream & operator<<(std::ostream &os, const complex &Num)
{
return (os <<"(" << Num._imaginary << " , " << Num._real << ")");
}
inline friend std::istream & operator>>(std::istream &is, const complex &Num)
{
is >> Num._imaginary;
is >> Num._real;
return is;
}
private:
T _imaginary;
T _real;
};

}

主.cpp

它还没有完成,但为了尝试一下,我将创建一个简单的主文件.cpp并编写了这个程序:

int main()
{
nmb::complex<double> a(2.4, 5.7);
nmb::complex<double> b;
//std::cin >> b;
std::cout << b << "n";
return 0;
}

问题是,如果我保持这一行//std::cin >> b;原样,代码运行时没有错误


没有评论

但是,如果我删除评论

int main()
{
nmb::complex<double> a(2.4, 5.7);
nmb::complex<double> b;
std::cin >> b;
std::cout << b << "n";
return 0;
}

代码抛出许多错误。


错误

在这里留下了一些错误,因为所有错误都使我达到了 30000 个字符的限制

C:C++C++ Programscomplex numbercomplexcomplex.hpp||In instantiation of 'std::istream& nmb::operator>>(std::istream&, const nmb::complex<double>&)':|
C:C++C++ Programscomplex numbercomplexmain.cpp|11|required from here|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|error: no match for 'operator>>' (operand types are 'std::istream' {aka 'std::basic_istream<char>'} and 'const double')|
C:msys64mingw64includec++9.2.0istream|168|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|168|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|error: cannot bind non-const lvalue reference of type 'bool&' to an rvalue of type 'bool'|
C:msys64mingw64includec++9.2.0istream|172|note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|172|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|error: cannot bind non-const lvalue reference of type 'short int&' to an rvalue of type 'short int'|
C:msys64mingw64includec++9.2.0istream|175|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|175|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|error: cannot bind non-const lvalue reference of type 'short unsigned int&' to an rvalue of type 'short unsigned int'|
C:msys64mingw64includec++9.2.0istream|179|note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|179|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|error: cannot bind non-const lvalue reference of type 'int&' to an rvalue of type 'int'|
C:msys64mingw64includec++9.2.0istream|182|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|182|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|error: cannot bind non-const lvalue reference of type 'unsigned int&' to an rvalue of type 'unsigned int'|
C:msys64mingw64includec++9.2.0istream|186|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|186|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|error: cannot bind non-const lvalue reference of type 'long int&' to an rvalue of type 'long int'|
C:msys64mingw64includec++9.2.0istream|190|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|190|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|error: cannot bind non-const lvalue reference of type 'long unsigned int&' to an rvalue of type 'long unsigned int'|
C:msys64mingw64includec++9.2.0istream|195|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|195|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|error: cannot bind non-const lvalue reference of type 'long long int&' to an rvalue of type 'long long int'|
C:msys64mingw64includec++9.2.0istream|199|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|199|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|error: cannot bind non-const lvalue reference of type 'long long unsigned int&' to an rvalue of type 'long long unsigned int'|
C:msys64mingw64includec++9.2.0istream|214|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(float&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|214|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|error: cannot bind non-const lvalue reference of type 'float&' to an rvalue of type 'float'|
C:msys64mingw64includec++9.2.0istream|218|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|218|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|error: binding reference of type 'double&' to 'const double' discards qualifiers|
C:msys64mingw64includec++9.2.0istream|222|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|222|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|error: cannot bind non-const lvalue reference of type 'long double&' to an rvalue of type 'long double'|
C:msys64mingw64includec++9.2.0istream|120|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__istream_type& (*)(std::basic_istream<_CharT, _Traits>::__istream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]'|
C:msys64mingw64includec++9.2.0istream|120|note:   no known conversion for argument 1 from 'const double' to 'std::basic_istream<char>::__istream_type& (*)(std::basic_istream<char>::__istream_type&)' {aka 'std::basic_istream<char>& (*)(std::basic_istream<char>&)'}|
C:msys64mingw64includec++9.2.0istream|124|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__ios_type& (*)(std::basic_istream<_CharT, _Traits>::__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>; std::basic_istream<_CharT, _Traits>::__ios_type = std::basic_ios<char>]'|
C:msys64mingw64includec++9.2.0istream|124|note:   no known conversion for argument 1 from 'const double' to 'std::basic_istream<char>::__ios_type& (*)(std::basic_istream<char>::__ios_type&)' {aka 'std::basic_ios<char>& (*)(std::basic_ios<char>&)'}|
C:msys64mingw64includec++9.2.0istream|131|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::ios_base& (*)(std::ios_base&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]'|
C:msys64mingw64includec++9.2.0istream|131|note:   no known conversion for argument 1 from 'const double' to 'std::ios_base& (*)(std::ios_base&)'|
C:msys64mingw64includec++9.2.0istream|235|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]'|
C:msys64mingw64includec++9.2.0istream|235|note:   no known conversion for argument 1 from 'const double' to 'void*&'|
C:msys64mingw64includec++9.2.0istream|259|note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf<char>]'|
C:msys64mingw64includec++9.2.0istream|259|note:   no known conversion for argument 1 from 'const double' to 'std::basic_istream<char>::__streambuf_type*' {aka 'std::basic_streambuf<char>*'}|
C:msys64mingw64includec++9.2.0bitsbasic_string.tcc|1466|note: candidate: 'template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&)'|
C:msys64mingw64includec++9.2.0bitsbasic_string.tcc|1466|note:   template argument deduction/substitution failed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|note:   mismatched types 'std::__cxx11::basic_string<_CharT, _Traits, _Allocator>' and 'const double'|
C:msys64mingw64includec++9.2.0bitsistream.tcc|931|note: candidate: 'template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT&)'|
C:msys64mingw64includec++9.2.0bitsistream.tcc|931|note:   template argument deduction/substitution failed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|note:   deduced conflicting types for parameter '_CharT' ('char' and 'const double')|
C:msys64mingw64includec++9.2.0istream|756|note: candidate: 'template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char&)'|
C:msys64mingw64includec++9.2.0istream|756|note:   template argument deduction/substitution failed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|note:   cannot convert 'Num.nmb::complex<double>::_imaginary' (type 'const double') to type 'unsigned char&'|
C:msys64mingw64includec++9.2.0istream|761|note: candidate: 'template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char&)'|
C:msys64mingw64includec++9.2.0istream|761|note:   template argument deduction/substitution failed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|note:   cannot convert 'Num.nmb::complex<double>::_imaginary' (type 'const double') to type 'signed char&'|
C:msys64mingw64includec++9.2.0bitsistream.tcc|963|note: candidate: 'template<class _CharT2, class _Traits2> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT2*)'|
C:msys64mingw64includec++9.2.0bitsistream.tcc|963|note:   template argument deduction/substitution failed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|note:   mismatched types '_CharT2*' and 'double'|
C:msys64mingw64includec++9.2.0istream|803|note: candidate: 'template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char*)'|
C:msys64mingw64includec++9.2.0istream|803|note:   template argument deduction/substitution failed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|note:   cannot convert 'Num.nmb::complex<double>::_imaginary' (type 'const double') to type 'unsigned char*'|
C:msys64mingw64includec++9.2.0istream|808|note: candidate: 'template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char*)'|
C:msys64mingw64includec++9.2.0istream|808|note:   template argument deduction/substitution failed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|note:   cannot convert 'Num.nmb::complex<double>::_imaginary' (type 'const double') to type 'signed char*'|
C:msys64mingw64includec++9.2.0istream|980|note: candidate: 'template<class _Istream, class _Tp> typename std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_istream<_Istream>, std::__is_extractable<typename std::__is_convertible_to_basic_istream<_Tp>::__istream_type, _Tp&&, void> >::value, typename std::__is_convertible_to_basic_istream<_Tp>::__istream_type>::type std::operator>>(_Istream&&, _Tp&&)'|
C:msys64mingw64includec++9.2.0istream|980|note:   template argument deduction/substitution failed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|37|required from 'std::istream& nmb::operator>>(std::istream&, const nmb::complex<double>&)'|
C:C++C++ Programscomplex numbercomplexmain.cpp|11|required from here|
C:msys64mingw64includec++9.2.0istream|980|error: no type named 'type' in 'struct std::enable_if<false, std::basic_istream<char>&>'|
C:C++C++ Programscomplex numbercomplexcomplex.hpp||In instantiation of 'std::istream& nmb::operator>>(std::istream&, const nmb::complex<double>&)':|
C:C++C++ Programscomplex numbercomplexmain.cpp|11|required from here|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|38|error: no match for 'operator>>' (operand types are 'std::istream' {aka 'std::basic_istream<char>'} and 'const double')|
C:msys64mingw64includec++9.2.0istream|168|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|168|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|38|error: cannot bind non-const lvalue reference of type 'bool&' to an rvalue of type 'bool'|
C:msys64mingw64includec++9.2.0istream|172|note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|172|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|38|error: cannot bind non-const lvalue reference of type 'short int&' to an rvalue of type 'short int'|
C:msys64mingw64includec++9.2.0istream|175|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|175|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|38|error: cannot bind non-const lvalue reference of type 'short unsigned int&' to an rvalue of type 'short unsigned int'|
C:msys64mingw64includec++9.2.0istream|179|note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|179|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|38|error: cannot bind non-const lvalue reference of type 'int&' to an rvalue of type 'int'|
C:msys64mingw64includec++9.2.0istream|182|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|182|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|38|error: cannot bind non-const lvalue reference of type 'unsigned int&' to an rvalue of type 'unsigned int'|
C:msys64mingw64includec++9.2.0istream|186|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|186|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|38|error: cannot bind non-const lvalue reference of type 'long int&' to an rvalue of type 'long int'|
C:msys64mingw64includec++9.2.0istream|190|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|190|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|38|error: cannot bind non-const lvalue reference of type 'long unsigned int&' to an rvalue of type 'long unsigned int'|
C:msys64mingw64includec++9.2.0istream|195|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|195|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|38|error: cannot bind non-const lvalue reference of type 'long long int&' to an rvalue of type 'long long int'|
C:msys64mingw64includec++9.2.0istream|199|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|199|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|38|error: cannot bind non-const lvalue reference of type 'long long unsigned int&' to an rvalue of type 'long long unsigned int'|
C:msys64mingw64includec++9.2.0istream|214|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(float&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|214|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|38|error: cannot bind non-const lvalue reference of type 'float&' to an rvalue of type 'float'|
C:msys64mingw64includec++9.2.0istream|218|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|218|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|38|error: binding reference of type 'double&' to 'const double' discards qualifiers|
C:msys64mingw64includec++9.2.0istream|222|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' <near match>|
C:msys64mingw64includec++9.2.0istream|222|note:   conversion of argument 1 would be ill-formed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|38|error: cannot bind non-const lvalue reference of type 'long double&' to an rvalue of type 'long double'|
C:msys64mingw64includec++9.2.0istream|120|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__istream_type& (*)(std::basic_istream<_CharT, _Traits>::__istream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]'|
C:msys64mingw64includec++9.2.0istream|120|note:   no known conversion for argument 1 from 'const double' to 'std::basic_istream<char>::__istream_type& (*)(std::basic_istream<char>::__istream_type&)' {aka 'std::basic_istream<char>& (*)(std::basic_istream<char>&)'}|
C:msys64mingw64includec++9.2.0istream|124|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__ios_type& (*)(std::basic_istream<_CharT, _Traits>::__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>; std::basic_istream<_CharT, _Traits>::__ios_type = std::basic_ios<char>]'|
C:msys64mingw64includec++9.2.0istream|124|note:   no known conversion for argument 1 from 'const double' to 'std::basic_istream<char>::__ios_type& (*)(std::basic_istream<char>::__ios_type&)' {aka 'std::basic_ios<char>& (*)(std::basic_ios<char>&)'}|
C:msys64mingw64includec++9.2.0istream|131|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::ios_base& (*)(std::ios_base&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]'|
C:msys64mingw64includec++9.2.0istream|131|note:   no known conversion for argument 1 from 'const double' to 'std::ios_base& (*)(std::ios_base&)'|
C:msys64mingw64includec++9.2.0istream|235|note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]'|
C:msys64mingw64includec++9.2.0istream|235|note:   no known conversion for argument 1 from 'const double' to 'void*&'|
C:msys64mingw64includec++9.2.0istream|259|note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf<char>]'|
C:msys64mingw64includec++9.2.0istream|259|note:   no known conversion for argument 1 from 'const double' to 'std::basic_istream<char>::__streambuf_type*' {aka 'std::basic_streambuf<char>*'}|
C:msys64mingw64includec++9.2.0bitsbasic_string.tcc|1466|note: candidate: 'template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&)'|
C:msys64mingw64includec++9.2.0bitsbasic_string.tcc|1466|note:   template argument deduction/substitution failed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|38|note:   mismatched types 'std::__cxx11::basic_string<_CharT, _Traits, _Allocator>' and 'const double'|
C:msys64mingw64includec++9.2.0bitsistream.tcc|931|note: candidate: 'template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT&)'|
C:msys64mingw64includec++9.2.0bitsistream.tcc|931|note:   template argument deduction/substitution failed:|
C:C++C++ Programscomplex numbercomplexcomplex.hpp|38|note:   deduced conflicting types for parameter '_CharT' ('char' and 'const double')|
||=== Build failed: 28 error(s), 8 warning(s) (0 minute(s), 13 second(s)) 
===|

为了读取复数,您必须修改Num,因为您不能将其声明const

std::istream & operator>>(std::istream &is, const complex &Num)

因此,正确的声明将不const

std::istream & operator>>(std::istream &is, complex &Num)