У меня есть вопросы, возможно, тривиальные ... Есть ограничения на тип возвращаемых данных с перегрузкой операторов?Я попытался перегрузить оператор +, в аргументах у меня было два объекта класса Nodo, и я хотел вернуть сумму атрибутов (с помощью метода get), которые были int.Поэтому я пишу внешнюю функцию int operator+(Nodo a,Nodo b)
, и это не сработало ... Итак, я попытался с int operator+(int tot,Nod a)
, и это сработало.Я полагаю, что тип возвращаемого значения должен быть одним из аргументов?
class Nodo
{
private:
Nodo *Next;
Employee *Emp;
public:
Nodo(){}
Nodo(Nodo *a,Employee *b):Next(a),Emp(b){}
virtual ~Nodo(){}
void SetNext(Nodo *a){Next=a;};
Nodo* GetNext(){return Next;}
void SetEmployee(Employee *emp){Emp=emp;}
Employee* GetEmployee(){return Emp;}
};
class Employee
{
private:
string name;
int salary;
public:
Employee(string name,int salary):name(name),salary(salary){}
virtual ~Employee() {}
string GetName(){return name;}
int GetSalary(){return salary;}
virtual void PrintInfo(){cout<<"Nome "<<name<<" Salario "<<salary<<endl;}
};
Я пытался с
int operator+(Nodo a,Nodo b)
{
int totale;
totale=a.GetEmployee()->GetSalary()+b.GetEmployee()->GetSalary();
return totale;
}
В результате происходит сбой.
Пока эта работа.
int operator+(int tot,Nodo a)
{
int totale;
totale=tot+a.GetEmployee()->GetSalary();
return totale;
}