J'écris une bibliothèque d'algèbre linéaire (histoire courte, c'est un devoir d'école) qui implique des matrices, des vecteurs, etc. Dans le processus de création de cette bibliothèque, je vais créer des fonctions qui effectuent des opérations mathématiques sur des objets. Par exemple, transposer la matrice, inverser la matrice, normaliser le vecteur, etc.
J'étais curieux de savoir quelle était la "meilleure pratique" pour ce type de fonction ... Autrement dit, devrais-je faire de la fonction une fonction membre ou non membre? (Par souci de clarté / utilisation de la bibliothèque)
Exemple:
//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);
Existe-t-il une norme concernant ce type d'opérations? Ou, au moins, y a-t-il une façon courante pour les gens de faire cela? Je penche vers la première option, mais j'aimerais savoir si cela est recommandé.