2012-04-06 23 views
1

Ich versuche, einen Operator zu machen, der mir erlaubt, eine ganze Zahl zu einer meiner Klassen hinzuzufügen, aber ich habe Probleme wie folgt.Binärer Operator überladen und Polymorphismus

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

Mit der Betreiber Implementierung von

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

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

So habe ich einen Vektor und ich versuche, durchlaufen und alle Werte auf eine ganze Zahl hinzuzufügen. Aber auch solche vom Typ Abgeleitet ändern die Summe nicht.

Wie kann ich den Operator polymorph überladen?

+0

Es gibt einige lustige Gerüche um die ganze Idee, aber auf jeden Fall sollten Sie die Definition Ihres * Vektors * angeben. Das erste potentielle Problem besteht darin, dass alle Ihre Objekte in "Base" geschnitten wurden ... –

Antwort

0

Hier ist ein schöner dr. Dobbs-Artikel, der 3 Lösungen für Ihr Problem darstellt http://drdobbs.com/cpp/200001978 Eine davon, und ich dachte dasselbe, ist, dass Sie Ihre Operatoren auf virtuelle Member-Funktionen oder Hilfsfunktionen verlassen können.