Sto scrivendo una libreria 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 su oggetti. Ad esempio, trasponi matrice, inverti matrice, normalizza vettore, ecc.
Ero curioso di sapere quale sia la "migliore pratica" per questo tipo di funzione ... Cioè, dovrei rendere la funzione una funzione membro o non membro? (Per chiarezza / biblioteca usa il sake)
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 per questo tipo di operazioni? O, almeno, c'è un modo comune di farlo? Mi sto appoggiando alla prima opzione, ma mi piacerebbe sapere se è consigliabile.