C/Visual C - Método que devuelve un puntero

 
Vista:

Método que devuelve un puntero

Publicado por Luis (1 intervención) el 02/07/2004 14:34:30
Si tengo una clase
class Caja {
private:
char a[]:
public:
char *getA (){ return a};

};

Se puede retornar a (getA ()) o como a es un puntero (aunque el array es estatico) no se debe retornar. ES QUE CAUNDO ES PUNETRO ME DA MIEDO POR SI SE LIBERA ESA MEMORIA Y SE QUEDA APUNTANDO POR AHÍ A ALGO QUE NO EXISTE.

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Método que devuelve un puntero

Publicado por javi (5 intervenciones) el 02/07/2004 22:40:17
Simplemente retornas una direccion de memoria ,con lo que mientra a exista no te debes preocupar ,ese get solo sirve para saber donde esta a en memoria.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Método que devuelve un puntero

Publicado por chuidiang (677 intervenciones) el 05/07/2004 09:53:31
Tal cual lo tienes, al instanciar Caja, el puntero no apunta a nada conocido. Antes de llamar a getA() debes asegurarte que se le hace apuntar a algún sitio. En el constructor de Caja, por ejemplo, puedes poner

Caja::Caja ()
{
a = new ...;
}

Lo normal es liberar esa memoria en el destructor.

Una vez que devuelves el puntero, este existe miestras exista la instancia de Caja que lo ha creado. Al destruir Caja, si esta libera a en el destructor, la memoria deja de existir.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Método que devuelve un puntero

Publicado por luis (1 intervención) el 05/07/2004 10:08:05
Pero y si yo he reservado memoria estaticamente, es decir,
Class Caja
{

private:
char a [30]
public ........

No necesito hacer un new.
¿En qué momentos deja de existir? mientras la instancia caja. Puede ser peligroso hacer el get de a o como es esttatico no hay problema.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar