1

クラスの 1 つに整数を追加できる演算子を作成しようとしていますが、次のような問題があります。

    struct Base
{
    //Will have value of zero
};

struct Derived : public Base
{
    int value_;
};

int & operator+=(int & num, Base & b);
int & operator+=(int & num, Derived & d);

のオペレーター実装で

int & operator+=(int & num, Base & b)
{
    return num;
}

int & operator+=(int & num, Derived & d)
{
    num += d.value_;
    return num;
}

だから私はベクトルを持っていて、それを繰り返し処理してすべての値を1つの整数に追加しようとしています。ただし、Derived 型であっても合計は変わりません。

演算子のオーバーロードをポリモーフィックにするにはどうすればよいですか?

4

1 に答える 1

0

ここに素敵な博士がいます。あなたの問題に対する 3 つの解決策を提示する dobbs の記事http://drdobbs.com/cpp/200001978 そのうちの 1 つで、私も同じことを考えていましたが、演算子を仮想メンバー関数または補助関数に依存できるということです。

于 2012-04-06T21:15:42.960 に答える