Прежде всего, вы должны реализовать bigint::operator=(const bigint&)
, оператор присваивания.
Теперь, в operator+
, вы изменяете содержимое объекта левой стороны, в этом коде:
if((digits[i] + rhs.digits[i]) > 9)
{
digits[i+1] = digits[i+1] + 1 ;
}
Это не хорошо. Например, если вы запустили этот код:
bigint x("5");
bigint y("6");
x+y;
x+y;
В итоге вы получите x
, равный 17.
Далее вы передаете значение для аргументов bigint::operator
, где вам, вероятно, следует передать ссылку (&
).
Наконец, ваши отступы здесь активно вредоносны:
while(new_digits[null] != '\0')
++null;
--null;
Что здесь находится в теле цикла? Это верно, не третья строка. Пожалуйста, не делайте отступ в таком коде, это заставляет котят плакать. Программирование котят, минимум.
Примечание: я не вижу здесь никакого кода динамического выделения памяти, что означает, что digits
, вероятно, массив статического размера. Убедитесь, что он достаточно большой, если вы собираетесь это сделать, и помните, что вы сломаете его, если его размер будет превышен.