Mam program, który musi liczyć duże liczby, niestety przy mnożeniu wyrzuca błędy:
Number& Number::operator*(Number& other) {
static Number Product;
Product.Number::~Number();
if (Product.digits != NULL)
delete[] Product.digits;
Number *ptrBigger, *ptrSmaller;
if (current >= other.current) {
ptrBigger = this;
ptrSmaller = &other;
}
else {
ptrBigger = &other;
ptrSmaller = this;
}
Product.current = ptrBigger->current + ptrSmaller->current - 1;
Product.digits = new char[Product.current];
int addSome = 0;
int multiplier = 0;
for (int i = ptrSmaller->current - 1;i >= 0;i--) {
for (int j = ptrBigger->current - 1;j >= 0;j--) {
Product.digits[j-multiplier] = Product.digits[j-multiplier] + ptrBigger->digits[j] * ptrSmaller->digits[i] + addSome;
if (Product.digits[j-multiplier] > 9) {
addSome = Product.digits[j-multiplier] / 10;
Product.digits[j-multiplier] = Product.digits[j-multiplier] % 10;
}
else
addSome = 0;
}
++multiplier;
}
Product.digits[0] = addSome;
return Product;
}

wiem, że ten static nie powinien tam być, ale prowadzący się przy nich upiera. Wie ktoś, jak to naprawić?