Не выводется результат

Вот код програмы не получаестя вывесть результат если метод summ прописать как обычную функцию то всё работает нормально а как метод не хочет подскажите пожалуйста в чём проблема
#include <iostream>
using namespace std;
 
class table
{
public:
    int *a;
    int n;
public:
    table()
    {
        a=NULL;
        n=0;
    }
 
    table(const table &obj)
    {
        n=obj.n;
        a=new int[n];
        for(int i=0;i<n;i++)
        {
            a[i]=obj.a[i];
        }
    }
 
    table summ(table &obj1,table &obj2)
    {
        table s;
        s.n=obj1.n;
        s.a=new int[s.n];
        for(int i=0;i<s.n;i++)
        {
            s.a[i]=obj1.a[i]+obj2.a[i];
        }
        return s;
    }
 
    friend istream &operator >>(istream &in,table &obj);
    friend ostream &operator <<(ostream &out,table &obj);
};
 
istream &operator >>(istream &in, table &obj)
{
    in>>obj.n;
    obj.a=new int[obj.n];
    for(int i=0;i<obj.n;i++)
    {
       cout<<"a["<<i+1<<"]=";
       in>>obj.a[i];
    }
    return in;
}
 
ostream &operator <<(ostream &out, table &obj)
{
    for(int i=0;i<obj.n;i++)
    {
        out<<obj.a[i]<<"  ";
    }
    return out;
}
 
int main()
{
    table b,c,s;
    cin>>b;
    cin>>c;
    s.summ(b,c);
    cout<<s;
    return 0;
}
2 ответа

А какой смысл в summ создавать и возвращать table s? написать так:
    void summ(table &obj1,table &obj2)
    {
        n=obj1.n;
       //...
    }


В логике программы не разбирался, но как минимум вижу, что метод summ у тебя возвращает table и не изменяет исходных полей класса. Соответственно, не вижу смысла в 68 строке. Может быть, вы хотели написать
s = s.summ(b,c);
Думаю, так работать будет. Ну а вообще, лучше сделать функцию summ типа void, а в ней уже изменять this->n и this->a.