Programación General > C/C++

 Apuntar A Null Al Destruir

(1/8) > >>

Diodo:
Hola

Como podria hacer para que al destruir un objeto su puntero se quede apuntando a NULL

El caso es este:


--- Código: Text --- objeto *obj1=new objeto();delete obj1;  // Aqui el puntero se queda apuntado a algo que no es NULLif(obj1==NULL)printf("es null"); // y aqui no me caza los NULL  
He probado en el destructor pero no se muy bien como hacerlo

Gracias y salu2

JuanK:
<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->objeto *obj1=new objeto();
delete obj1;  
obj1 = NULL;
if(obj1==NULL)printf("es null"); <!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

O bien sobrecargar el operador delete (no se si C++ lo permita), o crear tu función
<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->
public static void Delete(object obj)
{
   delete obj;
   obj = NULL
}

...
objeto *obj1=new objeto();
Delete(obj1);
if(obj1==NULL)printf("es null");
...<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

Diodo:
Si, lo que probe fue esto:


--- Código: Text --- void SMRentorno::operator delete( void *p ){  free(p);  p=NULL;}  
pero no me cambia el ptro a NULL

Eternal Idol:
Solo podria hacerlo si tuvieras un doble puntero (o una referencia que es el mismo), como tenes un puntero solo podes cambiar su contenido mas no su direccion ya que dentro de la funcion es una variable local (en pila).

Que yo sepa la unica forma valida de sobrecargar delete es esta:
void operator delete(void*);

Con lo cual no podes hacerlo asi ...

Una manera un poco pobre:

--- Código: Text --- #define Borrar(x)&#092;delete x;&#092;x = 0;  
Pero igual no se si tiene mucho sentido lo que queres hacer.

JuanK:
:lol:  ya me acostumbre a la semántica de C#  <_<

Bueno el problema viene siendo entonces de apuntadores no?

Seria algo asi:


--- Código: Text ---public static void Delete(void **obj){  delete *obj;  *obj = NULL} ...objeto *obj1=new objeto();Delete(&obj1);if(obj1==NULL)printf(&#34;es null&#34;);... 
 :rolleyes:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa