Article View: es.comp.lenguajes.c++
Article #52Re: Duda sobre Constructor de Copia
From: Pascal J. Bourguignon
Date: Mon, 03 Nov 2008 15:47
Date: Mon, 03 Nov 2008 15:47
55 lines
3203 bytes
3203 bytes
Empecinado <e.matas@gmail.com> writes:
> Hola tengo una duda sobre un constructor de copia muy b�sico que he de
> implementar:
> Tengo estas dos clases:
>
> ---------------------------------------------
> Clinica
> ---------------------------------------------
> - nombre
> - Especialidad* especialidades
> ....
> ---------------------------------------------
> y
>
> ---------------------------------------------
> Especialidad
> ---------------------------------------------
> - nombre
> ....
> ---------------------------------------------
>
> C�mo vemos en Cl�nica puede tener varias especialidades (Especialidad*
> especialidades) mi duda ser�a la siguiente:
>
> �C�mo elaboro el constructor de copia de la Clase Cl�nica?
Si usar�as un std::vector<Especialidad>, no tendr�as nada que hacer...
En cambio, si usas un std::vector<Especialidad*>, o mas bien,
std::vector< SmartPtr<Especialidad> >, entonces debes decidir si
cuando copias una Clinica, tambien copias Espacialidades.
A mi, me parece que una Espcialidad, es siempre la misma, cualsea el
hospital... Asi que con std::vector< SmartPtr<Especialidad> > tampoco
tendr�as nada mas que hacer.
Ahora bien, si necesitas usar un array C para implementar tu relaci�n
multiple entre Clinica y Espacialidad, vale. Pero tendras que
abstractearlo: define una clase template que te permite escribir:
class Clinica {
protected:
Multiple<Especialidad> especialidades;
...
};
y esconde el array C y los punteros dentro de esta clase template
Multiple. Luego, si implementas correctamente el constructor de copia
de Multiple, tampoco tendras nada que hacer por Clinica.
--
__Pascal Bourguignon__
Technical Details
Message-ID:
<7c4p2oolpa.fsf@pbourguignon.anevia.com>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!feeder1-2.proxad.net!proxad.net!feeder2-2.proxad.net!cleanfeed2-a.proxad.net!nnrp6-1.free.fr!not-for-mailReferences:
<e8bea3a4-71ef-41ed-86d6-64e93538c36e@c2g2000pra.googlegroups.com>Show Full Headers
Complete Article Headers
X-Google-Thread: f53ec,80b42ba1e6d86380
X-Google-Attributes: gidf53ec,domainid0,public,usenet
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!feeder1-2.proxad.net!proxad.net!feeder2-2.proxad.net!cleanfeed2-a.proxad.net!nnrp6-1.free.fr!not-for-mail
Newsgroups: es.comp.lenguajes.c++
Subject: Re: Duda sobre Constructor de Copia
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAABlBMVEUAAAD///+l2Z/dAAAA
oElEQVR4nK3OsRHCMAwF0O8YQufUNIQRGIAja9CxSA55AxZgFO4coMgYrEDDQZWPIlNAjwq9
033pbOBPtbXuB6PKNBn5gZkhGa86Z4x2wE67O+06WxGD/HCOGR0deY3f9Ijwwt7rNGNf6Oac
l/GuZTF1wFGKiYYHKSFAkjIo1b6sCYS1sVmFhhhahKQssRjRT90ITWUk6vvK3RsPGs+M1RuR
mV+hO/VvFAAAAABJRU5ErkJggg==
X-Accept-Language: fr, es, en
X-Disabled: X-No-Archive: no
References: <e8bea3a4-71ef-41ed-86d6-64e93538c36e@c2g2000pra.googlegroups.com>
From: pjb@informatimago.com (Pascal J. Bourguignon)
Date: Mon, 03 Nov 2008 16:47:45 +0100
Message-ID: <7c4p2oolpa.fsf@pbourguignon.anevia.com>
Organization: Anevia SAS
User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/22.2 (gnu/linux)
Cancel-Lock: sha1:ZDQ3MmFjNGNhYjQ0MWM1NmNkYjFlOTc2YzBhZDkwYjFkM2ViNjA4OQ==
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Lines: 55
NNTP-Posting-Date: 03 Nov 2008 16:47:45 MET
NNTP-Posting-Host: 88.170.236.224
X-Trace: 1225727265 news-2.free.fr 11842 88.170.236.224:42999
X-Complaints-To: abuse@proxad.net