2013-04-27 14 views
8

Ich definiere eine Klasse NS und ich möchte in der Lage sein, mathematische Operationen an Objekten dieser Klasse durchzuführen. I, erfolgreich überlastet kompiliert +, -, *, /, ... Mein Problem ist, dass ich keinen Code kompilieren, die einen Teil wie dieses hat:C++ Operator überladen, definieren Negativ von Objekt

NS a,b; 
a = -b; 

Wie kann ich definieren negativ von Objekten?

+6

Durch Ihr C++ Buch zu lesen! –

Antwort

18

Sie tun es auf eine sehr ähnliche Weise, um den binären Operator - zu überlasten. Stattdessen machen Sie es eine Nullfunktion, wenn es ein Mitglied ist, oder eine unäre Funktion, wenn es ein Nichtmitglied ist. Zum Beispiel als Mitglied:

class NS 
{ 
    public: 
    // Applies to this 
    NS operator-() { /* implement */ } 
}; 

Als Nicht-Mitglied:

class NS 
{ 
    friend NS operator-(const NS&); 
}; 

// Applies to obj 
NS operator-(const NS& obj) { /* implement */ }