2012-04-06 10 views
1

私はクラスに整数を追加できる演算子を作ろうとしていますが、次のような問題があります。バイナリ演算子のオーバーロードとポリモピズム

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

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

のオペレータ実装と

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); 

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

オペレータに多態性のオーバーロードをさせるにはどうすればよいですか?

+0

考え方全体には面白い匂いがありますが、とにかく*ベクトル*の定義を提供する必要があります。最初の潜在的な問題は、すべてのオブジェクトが 'Base'にスライスされていることです... –

答えて

0

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

関連する問題