C++ &引用;“显示”;未在此范围中声明

C++ &引用;“显示”;未在此范围中声明,c++,class,C++,Class,在编译下面的程序时,即使在声明和定义之后,也会出现错误“show未在此范围内声明”。不知道我错在哪里。请建议 谢谢 #include < iostream > using namespace std; class add { int x; int y; public: void putdata(int,int); void show(add);

在编译下面的程序时,即使在声明和定义之后,也会出现错误“show未在此范围内声明”。不知道我错在哪里。请建议

谢谢

 #include < iostream >

using namespace std;

class add

{

        int x;
        int y;

        public:
                void putdata(int,int);
                void show(add);
                friend add sum(add,add);
};

void add :: putdata (int m,int n)

{

        x = m;
        y = n;
}

void add :: show(add c)

{

        cout<<c.x <<" "<<c.y<<endl;
}

add sum(add a1,add a2)

{

        add a3;
        a3.x = a1.x + a2.x;
        a3.y = a1.y + a2.y;
        return(a3);
}


int main()
{

        add p,q,r;

        p.putdata(10,15);
        r.putdata(20,25);

        r = sum(p,q);

        show(r);

        return 0;
}
#包括
使用名称空间std;
类添加
{
int x;
int-y;
公众:
无效数据(int,int);
无效显示(添加);
朋友加和(加,加);
};
void add::putdata(int m,int n)
{
x=m;
y=n;
}
void add::show(添加c)
{

cout
show
add
的非静态成员函数,因此需要在
add
的实例上调用它:

p.show(r);
这样做没有多大意义,因此您可以将其设置为非成员函数,或删除其参数:

show(r); // non-member

您需要从add对象中调用show(r)member函数,就像,
r、 显示(r);

请修改格式
r.show(); // member