Ich schreibe eine lineare Algebra-Bibliothek (kurz gesagt, eine Schulaufgabe), die Matrizen, Vektoren usw. enthält. Beim Erstellen dieser Bibliothek werden Funktionen erstellt, die mathematische Operationen an Objekten ausführen. Zum Beispiel Matrix transponieren, Matrix invertieren, Vektor normalisieren usw.
Ich war neugierig, was die "beste Vorgehensweise" für diese Art von Funktion ist ... Soll ich die Funktion als Mitgliedsfunktion oder als Nichtmitglied definieren? (Aus Gründen der Übersichtlichkeit / Bibliothek verwenden Sie Sake)
Beispiel:
//Member function way:
B = A.transpose();
C = A.inverse();
//Non-member function way:
B = linalg::transpose(A); //Non-member transpose function in linear algebra namespace
C = linalg::inverse(A);
Gibt es einen Standard für diese Art von Operationen? Oder gibt es zumindest eine gemeinsame Art und Weise, wie Menschen dies tun? Ich neige zur ersten Option, würde aber gerne wissen, ob dies empfohlen wird.