Warum friend ?



  • Hallo Leute

    matrix.h

    class matrix
    {
    valarray<double> v;
    
    public:
    
    friend bool operator== (const matrix&, const matrix&);
    };
    

    matrix.cpp

    bool operator==(const matrix& m1,const matrix& m2)
    {...}
    

    Warum kann ich den Operator so nur als friend Funktion überladen ?

    Wie könnte ich es ohne friend machen ?

    THX Fleedo



  • ohne friend:

    1. du deklarierst den operator außerhalb der klasse, er muss dann über öffentliche memberfunktionen die nötigen daten bekommen (das sollte übrigens deine erste wahl sein)

    2. du machst ihn zu einer methode der klasse:

    class x {
    bool operator == (const x &);
    };
    

    das ist die letzte wahl



  • Hallo

    Meinst du so in der Art ?

    class matrix
    {
    ...
    }
    
    const bool operator ==(const matrix&, const matrix &);
    

    matrix.cpp

    const bool operator ==(const matrix& m1, const matrix &m2)
    {
    ...//Dann mit einer GetMethode die Daten aus der Klasse rausholen ???
    }
    

    Muss ich den Operator dann überhaupt noch in der matrix.cpp implementieren ?

    THX Fleedo



  • irgendwo musst du ihn implementieren, das ist klar.
    aber du könntest auch für jede memberfunktion eine eigene datei verwenden.
    das ist egal.



  • Hi

    THX aber warum kann ich die Operatoren nicht auf die genau gleiche Art und Weise inerhalb der Matrix überladen ?


Anmelden zum Antworten