Entwicklung einer einfachen Matrizenklasse



  • Warum ist die nicht const? Du kannst aus const Member Funktionen nur andere Member Funktionen aufrufen, die auch const sind.



  • Ok, da scheine ich einen Denkfehler gehabt zu haben.

    Was ist denn jetzt günstiger, nachvollziehbarer, besser? Diese, also bool swapRow() und bool invertMatrix(), als Memberfunktion lassen und const machen oder als freie Funktionen?



  • Alle Funktionen, welche nicht direkt auf private (oder protected) Klassenmember zugreifen, sollten als freie Funktionen definiert sein (am besten auch innerhalb eines zugehörigen Namensbereichs).

    Aber wieso hast du überhaupt zwei Funktionen: invertMatrix() und invert()?



  • Der Gedanke war, das ich invert() jeweils als const und als Referenz ausführen kann, ohne bool swapRow()und bool invertMatrix() groß zu ändern. Das ich sie zB problemlos als freie Funktionen in einem Namensraum auslagern kann.



  • Wäre es dann nicht besser, wenn invert die Memberfunktion ist, welche 'inplace' die Matrix invertiert und invertMatrix die freie Funktion, welche dann eine Kopie erzeugt und dann darauf invert aufruft (und die invertierte Kopie zurück gibt)?

    Ich entwickle die Klassenfunktionen meistens so, daß dort die ganze Logik implementiert ist und die freien Funktionen dann nur 'convenience'-Funktionen darstellen (welche dann die Funktionalität der Memberfunktionen benutzt und vereinfachte Aufrufe darstellt).



  • Wenn ich Dich richtig verstehe, habe ich das jetzt so. Könnt Ihr natürlich noch nicht wissen. invert() ist die Memberfunktion und invertMatrix()dir freie Funktion. Meinst Du das?

    PS: Diese Zeichen für Codehervorhebung sind ein Krampf 😉



  • Ja, genau umgekehrt (habe oben noch einen Satz ergänzt).



  • Hatte in der Zwischenzeit auch editiert. Habe ich Dich richtig verstanden, bzw oder eben nicht?



  • Ja, so meinte ich es (aber du solltest nicht nachträglich editieren und den Sinn umkehren, wenn schon ein Beitrag dazu gepostet wurde!).



  • Jupp, sorry. Hast Recht. Die Antworten kamen in dem Moment gerade so unerwartet schnell, da war es schon geschehen. Bin aber froh, das Ich Dich verstanden hatte 🙂

    Und als Bonus habe ich auch verstanden, warum die obige Fehlermeldung kam.


Anmelden zum Antworten