C++ cin中的模糊过载>&燃气轮机;操作人员

C++ cin中的模糊过载>&燃气轮机;操作人员,c++,operators,iostream,C++,Operators,Iostream,由于某种原因,我得到一个错误: “std::cin>>C1”中运算符“operator>>”的运算符不明确 声明:ComplexNumber.h 编译错误 候选者是:std::basic\u istream:::\u istream\u type&std::basic\u istream::operator>>(std::basic\u istream::\u istream\u type&(*)(std::basic\u istream::\u istream\u type&)[带(CharT

由于某种原因,我得到一个错误:

“std::cin>>C1”中运算符“operator>>”的运算符不明确

声明:ComplexNumber.h 编译错误
候选者是:std::basic\u istream:::\u istream\u type&std::basic\u istream::operator>>(std::basic\u istream::\u istream\u type&(*)(std::basic\u istream::\u istream\u type&)[带(CharT=CharT,)Traits=std::CharT\u
这和你想象的不一样

具有自动存储持续时间的对象声明通常采用以下两种形式之一:

Type name(constructor-arguments); // (1)
Type name;                        // (2)
请注意,第二个表单没有空括号(
()

这是因为C++的一个怪癖是,下面声明了一个名为
name
的函数,该函数返回类型为
type
的对象:

Type name();                      // (3)
现在,您没有告诉我们编译器的诊断输出中列出的候选重载是什么,但是很明显,您声明的函数
name
可以转换为多个目标类型,从而导致“不明确重载”错误;不管怎样,没有一个候选重载是您真正想要的

这个“问题”被称为“问题”

相反,写下:

int main() {
   ComplexNumber C1;
   cin >> C1;
}
我还建议:

  • 缩进代码以使其易读
  • 使用
    std::string
    而不是C样式的字符串
这和你想象的不一样

具有自动存储持续时间的对象声明通常采用以下两种形式之一:

Type name(constructor-arguments); // (1)
Type name;                        // (2)
请注意,第二个表单没有空括号(
()

这是因为C++的一个怪癖是,下面声明了一个名为
name
的函数,该函数返回类型为
type
的对象:

Type name();                      // (3)
现在,您没有告诉我们编译器的诊断输出中列出的候选重载是什么,但是很明显,您声明的函数
name
可以转换为多个目标类型,从而导致“不明确重载”错误;不管怎样,没有一个候选重载是您真正想要的

这个“问题”被称为“问题”

相反,写下:

int main() {
   ComplexNumber C1;
   cin >> C1;
}
我还建议:

  • 缩进代码以使其易读
  • 使用
    std::string
    而不是C样式的字符串
声明一个函数
C1()
,该函数不接受任何参数并返回一个
ComplexNumber

C++中,称为<强>最烦琐的解析< /强> >

声明一个函数
C1()
,该函数不接受任何参数并返回一个
ComplexNumber

这被称为C++中的“强>最烦琐的解析< /强> .< /p>< p>此语句:

ComplexNumber C1();
不创建
ComplexNumber
的实例。相反,它声明了一个名为
C1
的函数,该函数不带任何参数,并返回一个
ComplexNumber

请参阅。

此声明:

ComplexNumber C1();
不创建
ComplexNumber
的实例。相反,它声明了一个名为
C1
的函数,该函数不带任何参数,并返回一个
ComplexNumber


请参阅。

编译器会在下面列出候选对象,告诉我们它们是什么。候选对象是:std::basic\u istream:::\u istream\u type&std::basic\u istream::operator>>(std::basic\u istream::\u istream\u type&(*)(std::basic\u istream:::\u istream\u type&)[使用_CharT=char,_Traits=std::char_Traits'编译器会在下面列出候选对象,告诉我们它们是什么。候选对象是:std::basic_isttream:::_isttream类型&std::basic_isttream::operator>>(std::basic_isttream::_isttream类型&(*)(std::basic_isttream:::_isttream类型&)[with _CharT=char,_Traits=std::char_Traits'这很有意义!再次感谢您指出问题并编辑我的文章。请记住格式。这很有意义!再次感谢您指出问题并编辑我的文章。请记住格式。
ComplexNumber C1();
ComplexNumber C1();