Programación General > C/C++
instanciacion de un objeto en un atributo de la clase
migul:
Estoy desesperado! No entiendo por que eclipse no me deja ejecutar una funcion miembro de la clase matriz de mi programa. Siempre que el programa encuentra que tiene que ejecutar una función miembro de matriz en la que se instancia una nueva matriz (matriz temp en el caso de la suma p. ej) sale de la ejecucion y me da error. El codigo parece que está bien no tiene ningún problema (creo). ¿Será cosa del compilador o del entorno? Aquí dejo una de las funciones que me dan problema:
double Matriz::menores(int i){
double coef=0;
int j,k,l;
for (j=0;j<(length-i+1);j++);{ //recorre la diagonal en busca de menores
Matriz menor(i); //crea menores de orden deseado
for (k=0;k<i;k++);
{
for (l=0;l<i;l++); //los iguala a la matriz menor para no perturbar la principal
menor.a[k+j][l+j]=a[k+j][l+j];
}
menor.factdet(); //calcula el determinante
coef+=menor.det; //los va sumando
menor.~Matriz(); //Los destruye para que no se ocupe mucha memoria.
}
return coef;
}//en caso de pasar i=length devuelve el determinante de la matriz
...
Gracias de antemano! :D
Eternal Idol:
¿Donde la exactamente el error? Por lo que decis parece un problema con el constructor ... depuralo ...
Para que te podamos ayudar mejor tenes que darnos todo el codigo o preferentemente una version reducida a la minima expresion donde se produzca el error.
migul:
Mira los constructores son:
Polinomio::Polinomio(int n){
g=n;
q = new double [g];
for(int i=0;i<g;i++){
q=1;
}
}
Matriz::Matriz(int n)
{
int i,j;
length = n;
det=1;
ct.q= new double [length];
for(i=0;i<n;i++) ct.q=0;
// reserva memoria
a = new double *[n]; // reserva memoria para el vector de punteros
for (i=0;i<n;i++) a = new double[n]; // reserva memoria para cada fila
for(i=0;i<n;i++) for(j=0;j<n;j++) a[j]=0; // inicializa a cero
}
y el destructor:
Matriz::~Matriz()
{
if( a != NULL)
{ // libera memoria
for(int i=0;i<length;i++) delete [] a;
delete [] a;
}
if( ct.q != NULL)
{
delete [] ct.q;
}
}
Geo:
¿Y el error aparece en...?
Procura utilizar las etiquetas de código para que sea más legible :).
Eternal Idol:
Ademas de lo que ya te dije y Geo remarco.
Para que te podamos ayudar mejor tenes que darnos todo el codigo o preferentemente una version reducida a la minima expresion donde se produzca el error.
Navegación
[#] Página Siguiente
Ir a la versión completa