elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con plantillas y sobrecarga de operadores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con plantillas y sobrecarga de operadores  (Leído 4,431 veces)
4rkn63l

Desconectado Desconectado

Mensajes: 199



Ver Perfil
Ayuda con plantillas y sobrecarga de operadores
« en: 31 Mayo 2011, 20:13 pm »

Buenas.

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
  1. template <class T, int a, int b>
  2. class matriz
  3. {
  4. /*
  5. otros metodos
  6. */
  7. matriz& operator+(const matriz& m);
  8. matriz& operator*(const matriz& m);
  9. };
  10.  
Al crear una instancia de la plantilla desde el main, le paso el tipo y las dimensiones del array.
Código
  1. .
  2. .
  3. matriz<int,4,3> m;
  4.  
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.)
Código
  1. matriz<int,4,3> m1;
  2. matriz<int,4,3> m2;
  3. m1*m2 // -------> no hay error
  4.  
sin embargo
Código
  1. matriz<int,4,3> m1;
  2. matriz<int,3,5> m2;
  3. m1*m2 // -------> hay error
  4.  
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.

Hay algo que estoy haciendo mal? o es que tengo que implementarlo de otra forma?


« Última modificación: 31 Mayo 2011, 20:16 pm por 4rkn63l » En línea

Acermax

Desconectado Desconectado

Mensajes: 55


Ver Perfil
Re: Ayuda con plantillas y sobrecarga de operadores
« Respuesta #1 en: 31 Mayo 2011, 20:41 pm »

Es que ese uso que haces del template es muy extraño. Yo nunca lo había visto, de hecho no sabía ni que funcionase.
Como yo aprendí, y creo que es lo correcto, es que en el template simplemente le indiques el tipo de datos, luego las dimensiones de la matriz es cosa del constructor que tendrás que programar.

El error, creo, que es porque al hacer eso de las dimensiones en el template, te los detecta como datos de tipos distintos. Pero ya te digo, comento lo que imagino porque no sabia que se pudieran declarar templates así.

Puedes probar algo así

Código
  1. template <class T>
  2. class matriz{
  3. matriz ()
  4. matriz(int filas, int columnas){
  5. /* aquí haces tus cosas según como quieras implementarlo*/
  6. };
  7.  


En línea

4rkn63l

Desconectado Desconectado

Mensajes: 199



Ver Perfil
Re: Ayuda con plantillas y sobrecarga de operadores
« Respuesta #2 en: 31 Mayo 2011, 21:23 pm »

Muchas gracias Acermax funciona perfectamente de la forma que sugieres pasandole las dimensiones atraves del constructor. con respecto a la forma de declarar el template no es cosa mia xD. Y la verdad tiene mucha mas logica utilizar el constructor de esta forma.

muchas gracias!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sobrecarga de operadores (con punteros a clase)
Programación C/C++
Namida 0 3,061 Último mensaje 29 Diciembre 2010, 12:42 pm
por Namida
[Duda] Sobrecarga de operadores
Programación C/C++
BlackZeroX 4 2,770 Último mensaje 13 Junio 2011, 20:55 pm
por BlackZeroX
C++ - Sobrecarga de operadores
Programación C/C++
eltongabinghiman 2 2,740 Último mensaje 14 Marzo 2012, 18:14 pm
por x64core
problema con sobrecarga de operadores c++
Programación C/C++
swagger14 1 2,279 Último mensaje 4 Abril 2012, 22:26 pm
por david_BS
(Consulta) Problema con sobrecarga de operadores y plantillas
Programación C/C++
class_OpenGL 4 1,945 Último mensaje 1 Abril 2016, 18:05 pm
por class_OpenGL
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines