<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EstiloCorreo17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=ES link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Steven, eres el jodido amooo, testeando ya tu código gracias
miles, a lo mejor para otros era una duda tonta para cualquiera pero nos has
sacado de un aprieto.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Saludos<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Alexis y Ernesto<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Duda tienes algun tipo de relacion familiar con Chuck Norris?<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>De:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Cconclase
[mailto:cconclase-bounces@listas.conclase.net] <b>En nombre de </b>Davidson,
Steven<br>
<b>Enviado el:</b> viernes, 31 de mayo de 2013 6:30<br>
<b>Para:</b> Lista de correo sobre C y C++<br>
<b>Asunto:</b> Re: [C con Clase] Duda sobre herencia 2da parte<o:p></o:p></span></p>

</div>

<p class=MsoNormal><o:p> </o:p></p>

<div>

<p class=MsoNormal>Hola Alexis y Ernesto,<o:p></o:p></p>

<div>

<p class=MsoNormal><o:p> </o:p></p>

<div>

<p class=MsoNormal>2013/5/30 Alexis García Báez <<a
href="mailto:ybaez@infomed.sld.cu" target="_blank">ybaez@infomed.sld.cu</a>><o:p></o:p></p>

<div>

<div>

<div>

<div>

<div>

<div>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Saludos
de nuevo, aprovecho la oportunidad para agradecer de nuevo a Steven nos sirvio
de mucho ayuda y de no ser por otro percance ya hubiésemos terminado nuestro
proyecto aqui va la 2da duda</span><o:p></o:p></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Como
explique ayer tenemos la clase padre TCourse y las 2 hijas TProfesorCourse y
TEnterpriseCourse, hay una clase TCollectionCourse y una controladora
TEducationalCenter.</span><o:p></o:p></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Ahora
en la clase hija TProfesorCourse hay un atributo llamado Level, que solo
almacena un int, tenemos hicimos una funcion que reciba un int y devuelva
cuantas instancias TProfesorCourse tienen el atributo Level pasado con igual
valor que el int que entramos por parametros, la coleccion que es de clase
padre puede tener las 2 clases hijas eso lo solucionamos con el casteo dinamico
que nos explico Steven, el problema consiste en que pensamos que puede haber un
error a la hora de insertar los datos de las instancias de TProfesorCourse en
el arreglo de TCourse aqui les va el codigo del insertar.</span><o:p></o:p></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'> </span><o:p></o:p></p>

</div>

</div>

</div>

</div>

</div>

</div>

<div>

<p class=MsoNormal><o:p> </o:p></p>

</div>

<div>

<p class=MsoNormal>La verdad es que tengo que pedir disculpas porque se me
olvidó comentar acerca de un posible error que estabais cometiendo con el
puntero, 'ptrCourses'. Creasteis un array dinámico de objetos de la clase
'TCourse', pero en realidad os interesa crear un array dinámico de punteros a
objetos de la clase 'TCourse'; por ejemplo,<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p> </o:p></p>

</div>

<div>

<p class=MsoNormal>TCourse **ptrCourses = new TCourse*[100];  // o la
cantidad que sea<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p> </o:p></p>

</div>

<div>

<p class=MsoNormal><span lang=EN-US>ptrCourses[0] = new TEnterpriseCourse;<o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><span lang=EN-US>ptrCourses[1] = new TProfesorCourse;<o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

</div>

<div>

<p class=MsoNormal>Os interesa mantener una lista de objetos polimórficos. Esto
implica que necesitáis manipular los objetos a través de punteros o a través de
referencias; aconsejo usar punteros porque son más flexibles. Obviamente, necesitáis
herencia y que la clase base, 'TCourse' en este caso, tenga alguna función
miembro virtual.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p> </o:p></p>

</div>

<div>

<p class=MsoNormal style='margin-bottom:12.0pt'>Obviamente, esto supone cambiar
la forma de trabajar con este puntero, 'ptrCourses'; por ejemplo, el código del
correo-e anterior sería ahora:<o:p></o:p></p>

<div>

<p class=MsoNormal><span lang=EN-US style='font-size:9.5pt;font-family:"Arial","sans-serif"'>TProfesorCourse
*ProCourse;<o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><span lang=EN-US style='font-size:9.5pt;font-family:"Arial","sans-serif"'>...<o:p></o:p></span></p>

</div>

<div>

<p class=MsoNormal><span lang=EN-US style='font-size:9.5pt;font-family:"Arial","sans-serif"'><o:p> </o:p></span></p>

</div>

<div>

<p class=MsoNormal><span lang=EN-US style='font-size:9.5pt;font-family:"Arial","sans-serif"'>ProCourse
= dynamic_cast< TProfesorCourse * >( ptrCourses[i] );<o:p></o:p></span></p>

</div>

</div>

<div>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

</div>

<div>

<p class=MsoNormal>porque ahora cualquier elemento de 'ptrCourses' es un
puntero a un objeto polimórfico.<o:p></o:p></p>

</div>

<blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;
margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt'>

<div>

<div>

<div>

<div>

<div>

<div>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>//---------------------------------------------------------------------------</span><o:p></o:p></p>

</div>

</div>

</div>

</div>

</div>

</div>

</blockquote>

<div>

<p class=MsoNormal>[CORTE]<o:p></o:p></p>

</div>

<blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;
margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt'>

<div>

<div>

<div>

<div>

<div>

<div>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Esos
son los 2 insertar, uno para cada clase hija. Traceando el programa estamos
casi seguros que el error esta en la manera de insertar que trunca los
atributos de las clases hijas y mantiene correctamente los de la clase padre.</span><o:p></o:p></p>

</div>

</div>

</div>

</div>

</div>

</div>

</blockquote>

<div>

<p class=MsoNormal><o:p> </o:p></p>

</div>

<div>

<p class=MsoNormal>Sinceramente, no aconsejo crear estas dos funciones miembro,
ya que sólo una es necesaria:<br>
<br>
void TCourseCollection :: InsertCourse( TCourse *pCourse )<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>{<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>  if( length >= max )<o:p></o:p></p>

<div>

<p class=MsoNormal>    reallocate();<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal> <o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>  ptrCourses[length++] = pCourse;  // Meramente
copiamos punteros, y no objetos<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>}<o:p></o:p></p>

</div>

</div>

<div>

<p class=MsoNormal><o:p> </o:p></p>

</div>

<div>

<p class=MsoNormal>Por herencia, podemos hacer esto:<br>
<br>
tc.InsertCourse( new TProfesorCourse );<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>tc.InsertCourse( new TEnterpriseCourse );<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal>...<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p> </o:p></p>

</div>

<div>

<p class=MsoNormal><o:p> </o:p></p>

</div>

<div>

<p class=MsoNormal>Espero que esto os sirva.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p> </o:p></p>

</div>

<div>

<p class=MsoNormal>Steven<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p> </o:p></p>

</div>

</div>

</div>

</div>

</div>

</body>

</html>