Estoy escribiendo una biblioteca de álgebra lineal (cuento largo, es una tarea escolar) que involucra matrices, vectores, etc. En el proceso de creación de esta biblioteca, voy a crear funciones que realicen operaciones matemáticas en objetos. Por ejemplo, transponer matriz, invertir matriz, normalizar vector, etc.
Tenía curiosidad sobre cuál es la "mejor práctica" para este tipo de función ... Es decir, ¿debería hacer que la función sea una función miembro o no miembro? (Para mayor claridad / uso de la biblioteca sake)
Ejemplo:
//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);
¿Hay algún estándar con respecto a este tipo de operaciones? O, al menos, ¿hay una forma común en que la gente hace esto? Me estoy inclinando hacia la primera opción, pero me gustaría saber si esto se recomienda.