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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18
151  Programación / Programación C/C++ / Re: Ayuda: no entiendo bien los destructores. en: 25 Abril 2013, 15:52 pm
Gracias de todas formas :)
152  Programación / Programación C/C++ / Re: Ayuda: no entiendo bien los destructores. en: 25 Abril 2013, 15:21 pm
Pero si utilizas fichero de cabecera *.h y de codigo fuente *.cpp tienes que usar el operador de ámbito en el código fuente.

De todas formas probaré, vuelvo y escribo.


EDITO.

Si, si quito el operador de ámbito el compilador me dice que estoy declarando el método como no miembro.

Voy a clarificar la estructura del documento, está todo en un *.h porque si lo haces por separado no puedes usar templates:

Código:
#ifndef A_H
#define A_H 1

template <class T>
class A{
//atributos
   private: ...
//delcaración de métodos
   public:....
};

#endif

template <class T>
A::~A(){
   //codigo descrito arriva
}

//resto de métodos
...
...

Nota: lo mas acojonante es que si dejo el destructor vacío (sin código), al intentar hacer delete a un objeto clase A, me salta el mismo error siempre.
El error es, haga lo que haga el destructor, termina, porque escribo
cout<<"1"<<endl;' al principio y 'cout<<2..' al final y salen por pantalla los 2, el error es que el programa "no responde" justo antes de hacer el 'return 0' del main.

Nota2: he probado a declarar un puntero normal y hacerle delete y en ese caso el destructor si funciona bien.
Entonces pregunto, como se define un destructor de matrices, y saber si tenemos una clase con punteros y con variables normales, el destructor debe destruir solo los punteros, o también las variables normales.
153  Programación / Programación C/C++ / Destructor se ejecuta bien pero da error al final de la ejecución [SOLUCIONADO] en: 25 Abril 2013, 14:05 pm
Hola a todos.

Tengo una clase plantilla que como atributos tiene una matriz (T **m) y 2 enteros
(int m, int n). (Defino así la matriz porque si no el compilador me da fallo, creo que por el parámetro, tampoco me deja haciendo T *x[])
He leído que para clases que tienen atributos que son mas complejos que vectores (matrices, grafos etc) hay que definir el destructor porque éste por si solo no sabe que hacer ante dichas estructuras.
El caso es que lo estoy intentando implementar pero haga lo que haga siempre me da error, esto lo que he hecho, y no entiendo por qué no funciona:

Código:
private:
      T **x;
      int m,n;
      //.......
      //.......
public:
       A::~A()
      //.......
      //.......
template <class T>
A::~A(){
for(int i=0;i<this->m;i++){
delete[](this->x[i]);
}
delete[]this->x;
delete& this->m;
delete& this->n;
}

¿Como habría que hacerlo?

Muchas gracias.
154  Programación / Programación C/C++ / Re: Duda de novato con failbit de istream [SOLUCIONADO] en: 23 Abril 2013, 15:27 pm
Ok muchas gracias
155  Programación / Programación C/C++ / Re: ¿Pregunta puntero a char en c++? en: 22 Abril 2013, 23:39 pm
Saludos.

Un array es un puntero al primer elemento de éste, como dices en tu ejemplo, efectivamente apunta a la letra 'E'. De hecho te invito a que pruebes esto:
Código:
char c[]="Puntero";
cout<<*c<<endl;
cout<<*(c+(1*sizeof(char)))<<endl;

Comprobarás que sale por pantalla la letra 'P' y luego la 'u'.

Pero un array tiene la salvedad de que está indexado, es decir, podemos acceder a sus componentes sin pasar primero por todas las anteriores (por ej. v[5] --> accedo directamente a la 6ª componente), cosa que por ej. una lista enlazada de nodos, no.
No estoy seguro, pero al acceder a los índices del array en cuestión, me imagino que tomará el puntero al primer elemento y le sumara n*sizeof(<tipo_array>), tal como he hecho en mi ejemplo.

Saludos.
156  Programación / Programación C/C++ / Duda de novato con failbit de istream [SOLUCIONADO] en: 22 Abril 2013, 22:34 pm
Hola a todos.

Tengo una duda con el failbit de ifstream:

Mi duda es que para comprobarlo, en los ejemplos que he visto, escriben:
Código:
 if ( (entrada.rdstate() & ifstream::failbit ) != 0 ){ .... }
He leído la especificacion en cplusplus.com, pero no entiendo que significa el trozo de
'& ifstream::failbit ', es decir, ahí el '&' ¿es un operador de comparación o algo así?
¿Cómo funciona?

Muchas gracias.
157  Programación / Programación C/C++ / Re: Duda con dev-cpp 5.4.0 en: 16 Abril 2013, 00:11 am
SOLUCIONADO

Simplemente, indicar en el include la ruta completa del archivo en cuestión, aunque esté en la misma carpeta que el proyecto etc.

Saludos.
158  Programación / Programación C/C++ / Duda con dev-cpp 5.4.0 (SOLUCIONADO) en: 16 Abril 2013, 00:06 am
Hola a todos.

Me he bajado la última versión del dev-cpp porque en windows 8 no funciona otra, también he probado la típica solución de bajarme el portable y tampoco.

El caso es que esta versión se que a otras personas les ha funcionado en windows 8, a mí no.

Mi problema es que, no se por que, intento acceder a los métodos de una clase y el compilador me dice que no son funciones de dicha clase, sin embargo si que me deja acceder a los constructores de clase y usarlos perfectamente.

Para no complicarle al compil. he puesto todo el código en un *.h, primero la declaración #ifndef ... #define... class A{}; #endif y debajo todos los métodos, como si estubiese usando templates o inlines.

Aun así nada, alguien me puede ayudar por favor? Muchas gracias.
159  Programación / Programación C/C++ / Re: Duda con una cosa rarísima (tema punteros) en: 15 Abril 2013, 23:11 pm
Gracias por las respuestas.

El motivo por el cual no he usado new es porque, hasta donde yo se, si tienes un vector de 20 enteros por ej, construido con new, si quieres redimensionarlo a 25 tienes que hacer uno nuevo de 25 y copiarle los valores antiguos, y pensaba que poder hacerlo con realloc sería mas eficiente.

De todas formas creo que usaré la librería vector mejor, aunque no se aún muy bien como va, pero bueno ya la iré aprendiendo.

Saludos.
160  Programación / Programación C/C++ / Duda con una cosa rarísima (tema punteros) en: 15 Abril 2013, 18:50 pm
Hola a todos.

Tengo un problema, no se por qué al reservar espacio para una matriz dinámica se me de-reserva el espacio de un vector dinámico previamente reservado:

Muestro el código.

Código:

class Graph{
      private:
              int *nodes;
              int **nears;
              int *nNears;
              int nNodes;
....
};

inline void Graph::addArist(int o,int d){
    int n=this->search(o);
    if(n!=-1){
        if(this->nNears[n-1]==0){
            int aux=this->nodes[n-1];
            this->nears[n-1]=(int *)calloc(1,sizeof(int));

            //tras ejecutar esta instrucción, la componente n-1 de 'nodes' deja de //tener su valor original para tener números raros, y si intento reasignarle el valor //a nodes[n-1] el programa falla. No lo entiendo

            (this->nears[n-1])[0]=d;
        }else{
            int *aux=(int *)realloc(this->nears[n-1],(this->nNears[n-1]+1)*sizeof(int));
            this->nears[n-1]=aux;
           
            (this->nears[n-1])[this->nNears[n-1]]=d;
            this->nNears[n-1]++;
        }
    }
}


PD. Lo hago con calloc en lugar de new para poder usar realloc.

Muchas gracias
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines