<div dir="ltr">Hola Miguel Ángel,<div class="gmail_extra"><br><div class="gmail_quote">2013/12/20 Miguel Ángel Torres Fernández-Píñar <span dir="ltr"><<a href="mailto:miguelangeltorresfp@gmail.com" target="_blank">miguelangeltorresfp@gmail.com</a>></span><br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>Muchas gracias Steven como siempre por tomarte tu tiempo en responder.<br>
<br></div><div>Y me doy cuenta de que para llegar a ser un buen programador, aparte de conocer muy bien el lenguaje, hay que desarrollar muchísimo el ingenio.<br>

<br></div></div></blockquote><div><br></div><div>El lenguaje es una herramienta para ayudar en la comunicación con la máquina. Lo que hace falta es saber cómo comunicarse. No basta con saber las palabras francesas para hablar francés, hay que saber cómo expresarse también.</div>
<div><br></div><div>En la programación y en ciertos lenguajes, verás que hay varias formas de hacer la misma cosa. No es correcto elegir una solución de entre varias, sino razonar cada una y elegir la mejor que se adapte a las circunstancias presentadas por el problema entre manos. Dependiendo del problema, elegiremos una solución u otra. Por eso hay que pensar en el problema y fijarse en las necesidades: las partes importantes.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div></div><div>Creo que la segunda opción que comentas en realidad es parecida a si creamos una estructura base y hacemos que las demás hereden de ella, no ???<br>
<br></div><div>Eso, feliz navidad a todos, y en especial a tí Steven, que siempre estás ayudando a los demás.<br>

</div></div><div class="gmail_extra"><div class="gmail_quote"><br></div></div></blockquote><div><br></div><div>Podrías hacer eso, pero no sería igual a lo que mencioné, porque tienes que guardar ese dato en la clase y por tanto pertenece a los objetos que estás creando. Esto implica que creas el objeto base justo antes que el objeto actual (el derivado ), por lo que no tienes tiempo para guardar la variable de la clase base, que quieres usar como valor inicializador, para poder usarla en la instanciación del objeto (derivado). Es decir, quieres hacer esto:<br>
<br>struct Area2D_Base<br>{<br>  int nHeightInit;</div><div><br></div><div>  Area2D_Base( int h ) : nHeightInit(h)  {}<br>};</div><div><br></div><div>struct Area2D : public Area2D_Base</div><div>{<br></div><div>  int width, height;</div>
<div><br></div><div>  Area2D( int w, int h ) : Area2D_Base(h), width(w), height(Area2D_Base::nHeightInit)  {}</div><div>};</div><div><br></div><div>No hay otra forma de dar el valor inicial a 'nHeightInit' ni tampoco podemos usarla antes de ser creada, porque básicamente creamos el objeto 'Area2D_Base' dentro de la misma creación del objeto "propio" de 'Area2D'.</div>
<div><br></div><div>Lo que sí podrías hacer es usar una variable estática, pero entonces no hace falta usar herencia; esto es,</div><div><br></div><div><div>struct Area2D_ValorInicial<br>{<br>  static int nHeightInit;</div>
<div>};<br></div><div><br></div><div>struct Area2D</div><div>{<br></div><div>  int width, height;</div><div><br></div><div>  Area2D( int w, int h ) : width(w), height(h)  { Area2D_ValorInicial::nHeightInit = h; }</div><div>
  Area2D( int w ) : width(w), height(Area2D_ValorInicial::nHeightInit)  { }</div><div>};</div></div><div><br></div><div>Aquí, realmente estás usando la variable estática como una variable global, pero con menores peligros.</div>
<div><br></div><div>Como te digo, la forma "más POO" de hacer esto es que todo quede encapsulado en su propia estructura o clase, para que cada objeto manipule su propia información. Manteniendo dos clases separadas representa dos conceptos separados. En realidad, lo que propuse se parece más al patrón de la fábrica: un objeto simplemente sirve para instanciar objetos de otra clase, como una fábrica que va sacando productos de igual fabricación.</div>
<div><br></div><div><br></div><div>Espero que esto aclare el tema.</div><div><br></div><div>Steven</div><div><br></div><div>P.D.: Feliz Navidad a todos.</div></div></div></div>