2012-04-06 57 views
1

我試圖讓一個運算符,將允許我添加一個整數到我的類之一,但我有麻煩如下。二元運算符重載和polymorpism

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

運營商實現所以我有一個載體,我試圖來遍歷它和所有的值添加到一個整數。但是,即使那些Derived類型也不會更改總和。

如何使運算符重載多態?

+0

圍繞整個想法有一些有趣的氣味,但無論如何,您應該提供* vector *的定義。第一個潛在的問題是所有的對象都被切成了「Base」... – 2012-04-07 00:32:10

回答

0

這是一位不錯的博士。 dobbs爲您的問題提出3種解決方案的文章http://drdobbs.com/cpp/200001978 其中之一,我在想同樣的事情,就是您可以依靠虛擬成員函數或輔助函數的操作符。