c++ E1776报错怎么解决?


#include
#include
using namespace std;
class person
{
public:
    person(int c, int d) :a(c), b(d)
    {

    }
    int a;
    int b;
};
ostream operator<<(ostream& out, person& p)
{
    out << p.a << endl;
    out << p.b << endl;
    return out;
}
person operator+(person &p1, person &p2)
{
    person p3(0,0);
    p3.a = p1.a + p2.a;
    p3.b = p1.b + p2.b;
    return p3;
}

void test()
{
    person p1(10, 20);
    person p2(10, 20);
    person p3(0, 0);
    operator+ (p1, p2);
    p3 = p1 + p2;
    operator<<(cout, p3);
    cout << p3<int main()
{
    test();
    return 0;
}

img


这段代码为什么报错E1776,又怎么解决?

返回类型不对。
ostream &operator<<(ostream &out, person &p)

34、36行不需要啊