Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > C / C++ > Implementacion "operator []" de una matriz
-Foros de debate

C / C++
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Implementacion "operator []" de una matriz
Enviado por saclosa el día 28 de abril de 2008

¿Como debo implementar el "operator []" de una matriz sobre UN SOLO vector para poder usarlo: m [i][j]?

Creo que tengo que implementar dos operator's [] o algo asi


gracias

 
Re: Implementacion \
Enviado por rolan2kn el día 6 de mayo de 2008

Mira, si entiendo tu pregunta lo que quieres hacer, es que tienes una clase matriz y quieres implementarle el operador[] de manera que lo puedas usar matriz[][].


Bueno eso lo puedes hacer, te explicare la manera en que yo lo hago, quiza haya otra mejor, pero bueno....

tienes
class Matrix
{
private:
int** table;
int fil, col;
public:
.........
int* operator[](int _fil)
{
if(_fil > -1 && _fil < fil)
return table[_fil];
}
} ;

esto resuelve tu problema, que sucede: como has asignado memoria al arreglo bidimensional table, en forma de un arreglo de arreglos (esto es table = new int*[fil]), puedes acceder al arreglo que esta en la posicion _fil y como retornas un arreglo le puedes pedir el elemento de la posicion _col. Ej:
Matriz m;
int* x = m[0] ; // esto retorna la fila 0
int elem = x[5]; // esto retorna el elemento 6 del arreglo
int elem2 = m[0][5]; // esto retorna la fila de la posicion 0 y a la fila le pide el elemento dela posicion 5.

 
Re: Re: Implementacion \
Enviado por kike el día 11 de mayo de 2008

Si lo soluciona pero como controlas la j es decir el 2 parametro, no te comprueba el valor de la j si te pasa del tamaño, hay un error de seguridad, iva a preguntar lo mismo, yo tengo esa parte implementada, pero quiero controlar la j, nose de que forma hacerlo...

 

Re: Re: Implementacion \
Enviado por kike el día 14 de mayo de 2008

Ya e solucionado el problema y como dice roland2kn si te da el valor pero el segundo parametro no lo controlas, y cualquiera que use esa clase va a tener fallos de seguridad... como el segundo parametro sea mayor que su rango, la unica forma de hacerlo es haciendo una clase intermedia y sobrecargar el operador [] en las 2

 



Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network