代码中那里有问题,自学的不知怎么解决

在自学C++到递增运算符重载时
在类中用成员函数实现递增重载,前置没有报错,后置报错说没有合适的运算符

#include 
#include 
using namespace std;
class MyInteger {
    friend ostream& operator<<(ostream& cout, MyInteger& p);
public:
    MyInteger() {
        mNumber = 0;
    }
    //成员函数重载前置++运算符
    MyInteger &operator++() {
        mNumber++;//先进行加1
        return *this;//再将自身返回,所以返回类型为MyInteger,返回引用是为了一直对一个数据进行递增操作 
    }

    //成员函数重载后置++运算符
    MyInteger operator++(int) {
        //1、先记录当时的结果
        MyInteger temp = *this;

        //2、递增
        mNumber++;

        //3、返回记录的结果
        return temp;

    } 
private:
    int mNumber;
};

//重载左移运算符
ostream& operator<<(ostream& cout, MyInteger& p) {
    cout << p.mNumber;
    return cout;
}
void test01() {
    MyInteger myInt;
    cout << ++myInt << endl;
}
void test02() {
    MyInteger myInt;
    cout << myInt++ << endl;
}
int main() {

    test02();
    return 0;
}

我以为是前置和后置的函数冲突了就把前置重载给注释了,可还是报错,我猜问题是在左移运算符重载代码中
怎么修改可以让test02中的cout不报错那

  • 把 重载<< 的参数里 的& 去掉

img


#include <iostream>
#include <string>
using namespace std;

class MyInteger {
    friend ostream& operator<<(ostream& cout, MyInteger p);
public:
    MyInteger() {
        mNumber = 0;
    }
    //成员函数重载前置++运算符
    MyInteger &operator++() {
        mNumber++;//先进行加1
        return *this;//再将自身返回,所以返回类型为MyInteger,返回引用是为了一直对一个数据进行递增操作 
    }
 
    //成员函数重载后置++运算符
    MyInteger operator++(int) {
        //1、先记录当时的结果
        MyInteger temp = *this;
        //2、递增
        mNumber++;
        //3、返回记录的结果
        return temp;
    } 

private:
    int mNumber;
};
 
//重载左移运算符
ostream& operator<<(ostream& cout, MyInteger p) {
    cout << p.mNumber;
    return cout;
}

void test01() {
    MyInteger myInt;
    cout << ++myInt << endl;
}
void test02() {
    MyInteger myInt;
    cout << myInt++ << endl;
}
int main() {
    test02();
    return 0;
}