[C con Clase] ayuda con un template

Steven Davidson srd4121 en njit.edu
Lun Jun 20 01:57:54 CEST 2011


Hola Omar,

2011/6/19 omar mendoza <omar.p9 en gmail.com>

> hola a todos, tengo una clase template de la siguiente manera


[CORTE]


> tal vez m falte sintaxis aquí para explicarles, pero el programa compila y
> al ejecutarlo sale "violación de segmento" al hacer lo siguiente en otra
> clase
>
>          Map<SpecificUnit>  *sp = new Map<SpecificUnit>;
>
>   sp = units->getSpecifics();
>
>
> donde units es
>
> GenUnitsXML *units = new GenUnitsXML;
>

[CORTE]


> no sé por qué hay un error en getSpecifics(), pues solo es un método q
> devuelve un atributo, es decir, es un   get.
> Alguien que me pueda orientar??
>

El problema es que 'sp' guarda un objeto nuevo que creaste dinámicamente:

Map<SpecificUnit> *sp = new Map<SpecificUnit>;

Nada más hacer esto, modificas 'sp' para que apunte a otro objeto, así:

sp = units->getSpecifics();

Esto significa que estás perdiendo la memoria que creaste dinámicamente,
porque no tienes esa dirección de memoria, al modificar 'sp'.


El otro problema es que ahora 'sp' apunta a la información de un miembro de
'units', debido a las indiscriminaciones de 'getSpecifics()'. Se puede
producir un error si se destruye 'units', pero se sigue usando 'sp', ya que
esa dirección de memoria no sería válida.

Creo que deberías rediseñar todo esto para no dar acceso directo a los
miembros de un objeto; esto rompe el encapsulamiento de la POO.


Espero que esto te oriente.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110620/05d5b538/attachment.html>


Más información sobre la lista de distribución Cconclase