【问题标题】:in c++ when overloading the cin and cout operators in a public class i get these errors [duplicate]在 C++ 中,当在公共类中重载 cin 和 cout 运算符时,我得到这些错误 [重复]
【发布时间】:2020-11-28 18:54:41
【问题描述】:

这是代码

friend ostream& operator <<(ostream& output, const User& u)
        {
            output << endl << "User name :" << u.name << endl << "User id :" << u.id << endl << "User age :" << u.age << endl << "User email :" << u.email << endl << "User password :" << u.password << endl;
        }
        friend istream& operator >>(istream& input, User& u)
        {
            input >> u.name >> u.age >> u.email >> u.password;
        }

这是视觉工作室给我的错误

77.cpp(94): 错误 C4716: 'operator>>': 必须返回一个值 77.cpp(90): 错误 C4716: 'operator

【问题讨论】:

  • 如错误所述,您必须返回一个值。看看您的函数的签名如何声明它们返回 ostream&amp; 和 istream&amp;?在每个函数的末尾添加return output;和return input;。

标签: c++ visual-studio oop operator-overloading


【解决方案1】:

您的函数签名表明它们正在返回一个值(应该如此),但您没有返回任何内容。

返回您正在输出的表达式的结果,以便其他代码可以使用 operator&lt;&lt; 或 operator&gt;&gt; 的链接。

例如:

friend ostream& operator <<(ostream& output, const User& u)
{
    return output << endl << "User name :" << u.name << endl << "User id :" << u.id << endl << "User age :" << u.age << endl << "User email :" << u.email << endl << "User password :" << u.password << endl;
}

或者,您可以简单地在末尾添加一个 return:

friend ostream& operator <<(ostream& output, const User& u)
{
    output << endl << "User name :" << u.name << endl << "User id :" << u.id << endl << "User age :" << u.age << endl << "User email :" << u.email << endl << "User password :" << u.password << endl;
    return output;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 2012-11-14
    • 1970-01-01
    相关资源
    最近更新 更多