初学者关于后置递增重载上面的问题

#include<iostream>
#include<string>
using namespace std;
class myintegar
{
friend ostream &operator<<(ostream &cout, myintegar &p);

public:
myintegar()
{
m_num = 0;
};
myintegar operator++(int)
{
myintegar temp = *this;
m_num++;
return temp;
}
private:
int m_num;
};
ostream &operator<<(ostream &cout, myintegar &p)
{
cout << p.m_num ;
return cout;
}
void test02()
{
myintegar myint;
cout << myint++ << endl;
cout << myint << endl;
}
int main()
{
test02();
system("pause");
return 0;
}
有没有老哥能帮我看看我这个后置递增错在哪里了,为什么报错为:没有与这些操作匹配的"<<"运算符

而当我把myintegar operator++(int)改为myintegar &operator++(int)后,又可以运行,但是因为return返回的是temp显示的却是一串乱码数字,是因为myintegar &operator++(int)是返回引用的是地址,但是由于我没有解引用导致返回的是这个数字的地址吗?

#include<iostream>
#include<string>
using namespace std;
class myintegar
{
    friend ostream &operator<<(ostream &cout, myintegar p);

public:
    myintegar()
    {
        m_num = 0;
    };

    myintegar operator++(int)
    {
        myintegar my = *this;
        m_num++;
        return my;
    }
private:
    int m_num;
};
ostream &operator<<(ostream &cout, myintegar p)
{
    cout << p.m_num ;
    return cout;
}
void test02()
{
    myintegar myint;
    cout << myint++ << endl;
    cout << myint << endl;
}
int main()
{
    test02();
    system("pause");
    return 0;
}

 

myintegar& operator++(int)
    {
        m_num++;
        return *this;
    }

 


希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html

改为
ostream &operator<<(ostream &cout, myintegar p) //不用引用传入p
{
cout << p.m_num ;
return cout;
}
友元也要改一下就可以了