1

2D配列に格納されている2つの多項式を追加しようとしています。最初の行には係数が格納され、2番目の行には次数が格納されています。

オーバーロード+関数を作成しましたが、ここでは2Dで割り当てられたメモリ配列を使用しており、関数が呼び出されるとクラッシュします。

**更新:現在実行されていますが、結果はいくつかの大きな負の数です

参考までに、コピーコンストラクタとオーバーロード=演算子があります

// overload +
Polynomial Polynomial::operator+(const Polynomial &right)
{

    maxExp = right.maxExp;
    poly = new int *[maxExp];
    for (int i=0; i < maxExp; i++)
        *(poly + i) = new int[2]; 

    Polynomial temp = *this;

    for (int i=0; i < maxExp; i++)
    {
        for (int j=0; j < 2; j++)
        {
            temp.poly[i][j] = poly[i][j] + right.poly[i][j];
        }
    }
    return temp;
}
4

2 に答える 2

2

+ =で始まり、演算子をコピーして、+演算子を作成します。

于 2013-03-02T10:53:23.820 に答える
0

複数の問題がありますが、最も明白な問題は、最初の行が次のことです。

delete [] poly;

x被加数の1つ( in )を破棄しx + yます。また、メモリリークも発生しますが、この時点ではこれは二次的なものです。

編集:delete[]あなたが質問から編集したことに気づきました。これで問題は解決しませんが、さらに悪化します。まだ被加数を上書きしていますが、さらに多くのメモリがリークしています。

于 2013-03-02T11:00:07.930 に答える