Estoy practicando el uso de plantillas pero me he quedado atascado al querer usar la sobrecarga de operadores. Basicamente se trata de una plantilla de clase que la implemento como una matriz bidimensional.
Código
Al crear una instancia de la plantilla desde el main, le paso el tipo y las dimensiones del array.
template <class T, int a, int b> class matriz { /* otros metodos */ matriz& operator+(const matriz& m); matriz& operator*(const matriz& m); };
Código
Con la sobrecarga de operadores unarios no he tenido problema, sin embargo los binarios me han dado problema, en especial los operadores aritmeticos los cuales pareciera que no los estuviese declarados correctamente pues el compilador (DevC++) me tira errores de que no encuentra la funcion correcta solo candidatos, esto ocurre unicamente cuando intento por ejemplo multiplicar 2 instancias de la plantilla matriz de diferentes dimensiones, (sabemos que se puede hacer esto siempre y cuando la el numero de columnas de la matriz A sea igual al numero de filas de B.)
. . matriz<int,4,3> m;
Código
sin embargo
matriz<int,4,3> m1; matriz<int,4,3> m2; m1*m2 // -------> no hay error
Código
No se supone que segun la declaracion de la plantilla puedo pasarle cualquiera dos numeros enteros?? Aunque las dimensiones no sean correctas para efectuar las operaciones, podria comprobarlo dentro del metodo del operador sobrecargado.
matriz<int,4,3> m1; matriz<int,3,5> m2; m1*m2 // -------> hay error
Hay algo que estoy haciendo mal? o es que tengo que implementarlo de otra forma?