operator = überladen



  • ich verwende in meinem programm eine dynamische liste mit attributen (class Property). ich möchte erreichen, das der wert eines properties einem einfachen int übergeben werden kann.

    Property p;
    int n;
    
    n = p;
    

    zu diesem zweck wollte ich den = operator überladen:

    int operator = (int& dst, Property& src) {
       // Wert zuweisen und zurückgeben
    }
    

    leider kommt nun vom compiler die meldung "int operator=(int&, Property&)' must be a nonstatic member function"

    eigentlich wäre ich der meinung gewesen, das ich so etwas schon mal gemacht habe. hab ich einen denkfehler, oder können = operatoren nur innerhalb von klassen überladen werden?

    Compiler: MinGW



  • du kannst den Operator von "int" nicht überladen - da es ja keine Klasse ist.

    aber du kannst den operator int() von Property überladen

    class Property {
        int m_val;
    public:
        Property(int i): m_val(i)
        {}
        // ...
        operator int() const {
            return m_val;
        }
    };
    
    // benutzung:
    Property p(42);
    int i = p;
    

Anmelden zum Antworten