Sto scrivendo una libreria di algebra lineare (per farla breve, è un compito scolastico) che coinvolge matrici, vettori, ecc. Nel processo di creazione di questa libreria, creerò funzioni che eseguono operazioni matematiche sugli oggetti. Ad esempio, trasponi matrice, inverti matrice, normalizza vettore, ecc.
Ero curioso di sapere qual è la "migliore pratica" per questo tipo di funzione ... Cioè, dovrei rendere la funzione una funzione membro o non membro? (Per chiarezza / uso della biblioteca)
Esempio:
//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);
Esistono standard relativi a questo tipo di operazioni? O almeno c'è un modo comune in cui le persone lo fanno? Mi sto inclinando verso la prima opzione, ma vorrei sapere se questo è raccomandato.