se non sbaglio l'overloading dell'operatore deve restituire un'ggetto e non un variabile primitiva...io avevo fatto cosi:

using namespace std;

#include <iostream>

class nik{

public:
int a;

nik(int a)
{
this->a=a;
}
void stampa(){
cout<<"a="<<a<<endl;
}

};

nik &operator+(nik ax,nik bx);

int main(){

nik k(1);
nik l(1);

nik m=(k+l);

m.stampa();

return 0;
}


nik &operator+(nik ax,nik bx)
{
int a=ax.a;
int b=bx.a;

nik *v=new nik(a+b);

return *v;

}