知命126 2023-03-20 19:58 采纳率: 40%
浏览 17

重载“<<"运算符问题

先看代码

#include <iostream> 
#include <cstring> 
#include <cstdlib> 
#include <cstdio> 
using namespace std;
const int MAX = 110;
class CHugeInt 
{
    // 在此处补充你的代码
private:
    int x;
    char* y;

public:
    //构造函数
    CHugeInt(int a = 0) { x = a; }
    CHugeInt(const char* b)
    {
        y = new char[strlen(b) + 1];
        strcpy(y, b);
    }

    //重载“+”
    CHugeInt& operator+(CHugeInt& s)
    {
        for (int i = 0; i < strlen(y); i++)
            y[i] += s.x;
        return *this;
    }
    friend int operator+(int a, CHugeInt& s)
    {
        for (int i = 0; i < strlen(s.y); i++)
            a += s.y[i];
        return a;
    }
    friend CHugeInt operator+(CHugeInt& s, int a)
    {
        for (int i = 0; i < strlen(s.y); i++)
            s.y[i] += a;
        return s;
    }

    //重载“<<”
    friend ostream& operator<<(ostream& cout, CHugeInt& s)
    {
        for (int i = 0; i < strlen(s.y); i++)
            cout << s.y[i];
        return cout;
    }

    //重载“+=”
    friend int operator+=(CHugeInt& s, int a)
    {
        return s.x += a;
    }

    //重载前置自增
    friend int operator++(CHugeInt &s)
    {
        return ++s.x;
    }

    //重载后置自增
    friend int operator++(CHugeInt& s, int)
    {
        return s.x++;
    }

};

int  main()
{
    char s[210];
    int n;

    while (cin >> s >> n) 
    {
        CHugeInt a(s);
        CHugeInt b(n);

        cout << a + b << endl;
        cout << n + a << endl;
        cout << a + n << endl;
        b += n;
        cout << ++b << endl;
        cout << b++ << endl;
        cout << b << endl;
    }
    return 0;
}

img


明明代码中有“<<"的重载,为什么编译器给我这样的一个报错

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2023-03-20 20:09
    关注

    改成
    friend CHugeInt& operator+(CHugeInt& s, int a)

    评论

报告相同问题?

问题事件

  • 创建了问题 3月20日

悬赏问题

  • ¥15 如何通过命令行操作统信360安全浏览器?
  • ¥15 upload-labs-master第三关
  • ¥15 关于LT3758反激式负压电源,功率三极管烧毁的问题
  • ¥20 aruba ap305 CAP转IAP
  • ¥20 rockchip rk3588 ffmedia运行异常
  • ¥30 如何用 Java 简单系统设计?(相关搜索:服务器|面向对象设计|随机数)
  • ¥15 鸿蒙开发(关键词-开发环境)
  • ¥15 错误使用 mex Embedding metadata in the MEX file failed.
  • ¥30 Fractal eXtreme 64-bit求解锁15天限制
  • ¥30 openvpn 启动错误