<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>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"><br><br><div class="gmail_quote">El 18 de diciembre de 2013, 19:59, Davidson, Steven <span dir="ltr"><<a href="mailto:srd4121@njit.edu" target="_blank">srd4121@njit.edu</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hola Miguel Ángel,<div class="gmail_extra"><br><div class="gmail_quote"><div class="im">2013/12/15 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><div><div>Hola, un saludo a tod@s :<br>

<br></div></div></div></div></blockquote><div><br></div></div><div>[CORTE]</div><div class="im"><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></div></div></div>¿ Cómo podría hacer para no tener que estar inicializando estas propiedades ( con el mismo valor ) en cada una de las instancias ?.<br>
<div><div><div><div><br></div><div></div></div></div></div></div></blockquote></div></div><br></div><div class="gmail_extra">Varios socios te han contestado, pero quiero agregar a la discusión. Tal y como explicas, lo que quieres es una forma sencilla y automatizada de pasar el mismo valor para el campo "height" para cualquier objeto instanciado.</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">No recomiendo usar un miembro estático para solucionar este problema, porque tal campo no describe el concepto del tipo de dato que estás definiendo. Tu problema es a la hora de instanciar; no de diseño.</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">En estos casos, la solución es crear una interfaz de mayor nivel; en inglés, se suele hablar de "front end". Digamos que tienes esto:</div><div class="gmail_extra">

<br></div><div class="gmail_extra">struct Area2D<br>{</div><div class="gmail_extra">  int width;<br>  int height;</div><div class="gmail_extra"><br></div><div class="gmail_extra">  Area2D( int w, int h ) : width(w), height(h)  {}</div>

<div class="gmail_extra">};</div><div class="gmail_extra"><br></div><div class="gmail_extra">La solución es crear una función que automatice lo que quieres; recomiendo que tal función sea global:</div><div class="gmail_extra">

<br></div><div class="gmail_extra">Area2D CrearArea2D( int width, int height = -1 )<br>{</div><div class="gmail_extra">  static int _height = 0;</div><div class="gmail_extra"><br></div><div class="gmail_extra">  if( height >= 0 )  _height = height;</div>

<div class="gmail_extra"><br>  return Area2D( width, _height );<br>}<br><br></div><div class="gmail_extra">Aquí sí usaríamos la variable estática para que 'CrearArea2D()' "recuerde" el valor original que se le pasó. Esto significa que la primera llamada tiene que tener el valor de 'height', pero no para las subsiguientes llamdas. Por ejemplo,</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">Area2D a = CrearArea2D( 10, 20 );</div><div class="gmail_extra"><br></div><div class="gmail_extra">// Ahora usaremos 20 para 'height'</div><div class="gmail_extra">

<div class="gmail_extra">Area2D b = CrearArea2D( 16 );</div><div><div class="gmail_extra">Area2D c = CrearArea2D( 57 );</div></div><div><div class="gmail_extra">Area2D d = CrearArea2D( 100 );</div></div><div class="gmail_extra">

<br></div><div>En el ejemplo anterior, 'height' no acepta valores negativos. Si esto no es tu caso y no tienes un valor inválido que puedes considerar especial para este campo, entonces sugiero usar un puntero. Esto es,<br>

</div></div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">Area2D CrearArea2D( int width, const int *pHeight = nullptr )<br>{</div><div class="gmail_extra">  static int height = 0;</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">  if( pHeight )  height = *pHeight;</div><div class="gmail_extra"><br>  return Area2D( width, height );<br>}<br></div></div><div class="gmail_extra"><br></div><div class="gmail_extra">

Esto implica que debes pasar una variable, y no un valor literal.</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">De todas maneras, esta solución no es la mejor desde el punto de vista de la Programación Orientada a Objetos. La solución es crear otra clase. Por ejemplo,</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">struct Area2D_Bonita<br>{</div><div class="gmail_extra">  int height;<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">  Area2D_Bonita( int h ) : height(h)  {}</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">  Area2D Crear( int width )  {  return Area2D( width, height ); }<div class="gmail_extra">};<br></div></div><div class="gmail_extra"><br></div><div class="gmail_extra">

Y así, haríamos esto:<br><br>Area2D_Bonita a2db( 20 );</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">Area2D a = a2db.Crear( 10 );</div><div class="gmail_extra">Area2D b = a2db.Crear( 16 );<br>

</div><div class="gmail_extra"><div><div class="gmail_extra">Area2D c = a2db.Crear( 57 );</div></div><div><div class="gmail_extra">Area2D d = a2db.Crear( 100 );</div></div></div></div><div class="gmail_extra"><br></div><div class="gmail_extra">

<br></div><div class="gmail_extra">Sin embargo, como mencionó Programante, dudo que vayas a escribir tantos objetos explícitamente. Lo normal es crear cada objeto en un tipo de contenido o de agregado, como por ejemplo un array, una lista dinámicamente enlazada, un árbol, etc..</div>

<div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">Espero que todo esto te sea de ayuda.</div><span class="HOEnZb"><font color="#888888"><div class="gmail_extra"><br></div><div class="gmail_extra">
Steven</div><div class="gmail_extra">
<br></div></font></span></div>
<br>_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br></blockquote></div><br></div>