Проблема в том, что это определение не будет работать для того, что вы собираетесь делать;
Numar *Numar :: operator* (Numar *nr2)
Если вы хотите определить тип Numar
и арифметических операторов перегрузки , вам нужно работать со значениями (в конце концов, ссылками на константы или значения), а не с указателями. В противном случае вы потеряете память, как только у вас будут временные вычисления.
Итак, вам нужно пересмотреть дизайн кода, чтобы в итоге вы получили следующую подпись:
Numar Numar :: operator* (Numar nr2)
Чтобы это работало, Numar
и Lista
необходимо реализовать правило 3 .
Редактировать: Во избежание копирования значений, когда в этом нет необходимости, вы можете - в соответствии с предложением 1201programalarm в комментариях - перейти к:
Numar Numar :: operator* (const Numar& nr2)
Но для этого может потребоваться некоторая дисциплина в определении функций-членов, которые вы вызываете в nr2 с учетом констант.