Выходное значение массива, а не адрес памяти массива - PullRequest
0 голосов
/ 08 ноября 2018

Итак, я создал базовый класс полиномов в C ++, который динамически сохраняет коэффициенты этих полиномов в куче. В настоящее время я нахожусь в процессе перегрузки операторов, так что я могу сложить / вычесть полиномы вместе, чтобы упростить их и т. Д. Однако я получаю неожиданные результаты, когда пытаюсь перегрузить оператор *. Похоже, вместо того, чтобы возвращать значение индекса в массиве, он возвращает позицию массива. Это мой * операторный метод в моем .cpp файле:

Polynomial Polynomial::operator*(Polynomial p) {
int maxDegree = (degree)+(p.degree - 1);
int *intArray3 = new int[maxDegree];
int i, j;
for (int i = 0; i < degree; i++) {
    for (int j = 0; j < p.degree; j++) {
        cout << getCoef(i) << " * " << p.getCoef(j) << " = " << getCoef(i)*p.getCoef(j) << endl;
        intArray3[j] += (getCoef(i))*(p.getCoef(j));
        cout << " intArray3[" << j << "] contains : " << intArray3[j] << endl;
    }
}
return Polynomial(maxDegree, intArray3);}

Строки:

cout << getCoef(i) << " * " << p.getCoef(j) << " = " << getCoef(i)*p.getCoef(j) << endl;

и

cout << " intArray3[" << j << "] contains : " << intArray3[j] << endl;

возврат

10 * 1 = 10
intArray3[0] contains : -842150441

в моей консоли. Я предполагаю, что проблема заключается в моем использовании указателей где-то, но я не могу на всю жизнь подумать почему. Я реализовал эту перегрузку аналогично моим + и - перегрузкам, и они работают нормально. Будем очень благодарны любой помощи. Приветствия.

...