Вы пытаетесь суммировать указатели на объекты вместо самих объектов. Чтобы вызвать перегруженный оператор, вы должны вызывать его для объектов, разыменовывая указатели.
Кстати, создание всех этих объектов с new
- ужасный способ сделать C ++; в C ++, в отличие от Java / C #, вы должны использовать new
только тогда, когда вам нужно, и размещать все остальное в стеке. operator+
возвращение указателя на вновь созданный объект является мерзостью.
Способ написания кода на C ++:
ThreeDigits ThreeDigits::operator+(const ThreeDigits &number) const
{
return ThreeDigits(getNumber()+number.getNumber()); // construct a temporary and return it
}
// ...
ThreeDigits first(2.55998);
ThreeDigits second(5.666542);
ThreeDigits result=first+second;
Кстати, обычным способом перегрузки арифметических операторов является сначала перегрузка присваивающих версий (+ =, - =, ...), а затем построение над ними «нормальной» версии. Подробнее о перегрузке операторов см. В разделе часто задаваемых вопросов о перегрузке операторов .