Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con Arreglo Dinamico

Estas en el tema de Problema con Arreglo Dinamico en el foro de C/C++ en Foros del Web. Estoy tratando de resolver una asignacion de la uni, pero tengo un problema con un arreglo dinamico. Esto esta dentro de una clase: Código: class ...
  #1 (permalink)  
Antiguo 29/05/2008, 10:11
 
Fecha de Ingreso: septiembre-2006
Mensajes: 328
Antigüedad: 17 años, 8 meses
Puntos: 3
Pregunta Problema con Arreglo Dinamico

Estoy tratando de resolver una asignacion de la uni, pero tengo un problema con un arreglo dinamico.

Esto esta dentro de una clase:
Código:
class TMatriz {
          
          int i, j;
          float matriz[i][j];
          ...
          ...
};
y este es el constructor:
Código:
//Constructor de TMatriz.h
TMatriz::TMatriz (int numFilas=3, int numCols=3) {
          
          i= numFilas; j= numCols;
          &matriz= (float*) calloc ((i*j), sizeof(float));
}
Me dice: "Uso Invalido del miembro no-estatico TMatriz::i", y lo mismo para "j" *
Pero no entiendo, no se supone que matriz[i][j] solo se llama por medio del constructor? y cuando esto sucede "i" y "j" ya tienen valores asignados.

* El error reportado dice: invalid use of non-static data member `TMatriz::i'
  #2 (permalink)  
Antiguo 30/05/2008, 07:57
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Respuesta: Problema con Arreglo Dinamico

Si, definitivamente no puedes hacer eso...

Código:
class TMatriz {
          
          int i, j;
          float **matriz;
          ...
          ...
};
Así debería declararse una matriz dinámica. Si le colocas los corchetes estás diciendo que es un arreglo bidimensional estático, como sabrás a esa clase de arreglo no se le puede colocar una variable en los corchetes. Ahora, al ser propiedades de una clase tampoco puedes usarlas de ese modo.

El constructor debería ser algo así:
Código:
//Constructor de TMatriz.h
TMatriz::TMatriz (int numFilas=3, int numCols=3) {
          i= numFilas; j= numCols;
          *matriz= (float *) calloc ( i, sizeof(float));
          for(int k=0; k < i; ++k)
             matriz[k]= (float *) calloc ( j, sizeof(float));

}
O si los vas a almacenar en un arreglo unidimensional:
Código:
class TMatriz {
          
          int i, j;
          float *matriz;
          ...
          ...
};

//Constructor de TMatriz.h
TMatriz::TMatriz (int numFilas=3, int numCols=3) {
          i= numFilas; j= numCols;
          matriz= (float *) calloc ( i*j, sizeof(float));
}
Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #3 (permalink)  
Antiguo 30/05/2008, 16:34
 
Fecha de Ingreso: septiembre-2006
Mensajes: 328
Antigüedad: 17 años, 8 meses
Puntos: 3
Respuesta: Problema con Arreglo Dinamico

Gracias _Lucifer_ esto aclara mucho :).

Uno de mis compañeros de clase, de chance, puso dos asteriscos y funciono, esto me tenia en duda, me pueden explicar esos 2 asteriscos? Que significan? Como se usan?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:21.