1

助けてください、二重連結リストで演算子 ++ のオーバーロードを実現してください。私はAとBの2つのクラスを持っています。

class A {
private:
    int h;
    int a;
public:
    A *next, *prev;

friend A operator ++(A &, int);
};

A operator ++(A &t, int) {
    A temp = t;
    temp.h++;
    temp.a++;
    return temp;
}


class B {
private:
    A *head, *tail;
public:
    void incValue();
};

void B::incValue() {
    while(head != nullptr) {
        head++;
        head = head -> next;
    }
}

メソッド incValue() head = NULL を実行した後、これが機能しない理由がわかりません。

PS このコードは eq でなければなりません。ヘッド++

head -> setH(head -> getH() + 1);
head -> setA(head -> getA() + 1);
4

3 に答える 3

1

演算子 ++ をオーバーロードするには、リスト内の現在の位置を定義するリンク リストのデータ メンバーをサポートする必要があります。また、リンクされたリストの現在の位置をリセットするメンバー関数も必要です。

于 2013-11-06T11:18:34.573 に答える