<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
Muchas gracias Steven, tu siempre me sacas de dudas con los punteros =P<br><br>
<hr id="EC_[object]">
<br>

<hr id="EC_[object]">
<br>
<font color="#333399" size="4">Usar direcciones de Internet con nombres es para niñitas.</font><br>
<font color="#333399" size="4">Los verdaderos hombres memorizan las IPs de los sitios a los</font><br>
<font color="#333399" size="4">que quieren acceder para evitar tener que pasar por el DNS....</font><br>
 <br>
<p align="right"><font color="#339966" size="4">Atte. Adrian (Oropher)</font></p>
<p align="left"><br></p>
<p align="left"><br><font size="1"><font style="background-color: rgb(204, 255, 255);" color="#ff0000">Mi Blog: </font><a href="http://www.oropher.com.mx/"><font style="background-color: rgb(204, 255, 255);" color="#0000ff">http://www.oropher.com.mx/</font></a><font style="background-color: rgb(204, 255, 255);" color="#ff0000"><br></font></font></p><font size="1"></font>

<hr id="EC_[object]">
<br>

<hr id="EC_[object]">
<br><br><br><br><br>> Date: Tue, 24 Feb 2009 15:35:54 -0500<br>> From: srd4121@njit.edu<br>> To: cconclase@listas.conclase.net<br>> Subject: Re: [C con Clase] Estructuras y punteros<br>> <br>> Hola Ángel,<br>> <br>> Angel Adrián Carrillo Comparán wrote:<br>> > Tengo un problema con unos punteros, cuando mandoa  llamar la funcion<br>> > de Leer(Cilindro &RefCil) esta manda a llamar a Leer(Circulo &RefC) <br>> > pasandole como parametro el puntero Circulo  de la estructura de <br>> > Cilindro y esta funsion a su ves llama a Leer(Punto &RefP) pasandole<br>> >  como parametro el puntero Punto de la estructura de Circulo.<br>> > <br>> <br>> Quiero aclarar que estos parámetros no son punteros sino referencias. Lo <br>> que sí es cierto es que en tu diseño, estas referencias contienen punteros.<br>> <br>> > El problema es que al leer los valores de punto y regresar a <br>> > Leer(Circulo &RefC) los valores de punto se mantienen, pero al<br>> > regresar a Leer(Cilindro &RefCil) los valores que tenia la estructura<br>> > de Punto ya no contienen valores, les pongo el programa que estoy<br>> > realizando, de ante mano muchas gracias!!!!<br>> > <br>> <br>> Esto es porque los punteros miembros de estas estructuras apuntan a <br>> variables locales, las cuales son destruidas nada más terminar su <br>> ámbito, que en estos casos es al terminar la función.<br>> <br>> Veamos el código fuente.<br>> <br>> > #include <iostream>                 //Para cout y cin<br>> > #include <conio.h>                 //Para getch()  y clrscr() ó ystem <br>> > ("cls")<br>> > #include <iomanip>                 //Para setfill() y setw()<br>> > #include <stdio.h>                 //Para gets()<br>> > #include <math.h>                //Para M_PI<br>> > <br>> <br>> Sugiero usar los nombres recientes: <cstdio> y <cmath>.<br>> <br>> [CORTE]<br>> <br>> > int main (void)<br>> >     {<br>> >         //clrscr();<br>> >         system ("cls");<br>> >         Cilindro Cil;<br>> >         Leer (Cil);<br>> >         cout << Cil.AptC->AptP->coordx << Cil.AptC->AptP->coordy;<br>> >                 <br>> >         cout.setf (ios::fixed);<br>> >         cout.setf (ios::showpoint);<br>> >         cout.precision (2);<br>> >                 <br>> >         Imprimir (Cil);<br>> >         getch();<br>> >         return 0;<br>> >     }                           //fin de main ()<br>> >        <br>> > void Leer (Punto &RefP)<br>> >     {<br>> >         cout << "\tDATOS DEL PUNTO\n"<br>> >              << "\tIngresa la coordenada de X: ";<br>> >         cin  >> RefP.coordx;<br>> >         cout << "\tIngresa la coordenada de Y: ";<br>> >         cin  >> RefP.coordy;<br>> >         cout << endl;<br>> >     }                            //fin de leer ()<br>> >      <br>> > void Imprimir (Punto &RefP)<br>> <br>> Sugiero anteponer 'const' a este parámetro, ya que no tienes intención <br>> de modificar su contenido.<br>> <br>> >     {<br>> >         cout << "\tLas coordenadas del punto son: ["<br>> >              << RefP.coordx << "," << RefP.coordy << "]" << endl << endl;<br>> >     }                               //fin de imprimir ()<br>> >      <br>> > void Leer (Circulo &RefC)<br>> >     {<br>> >         Punto P;<br>> >         RefC.AptP=&P;<br>> <br>> Esto es un problema. El miembro 'AptP' apunta a una variable local 'P'. <br>> Esto significa que al terminar de ejecutar 'Leer()', la variable 'P' es <br>> destruida y por tanto el miembro 'AptP' apunta a "basura".<br>> <br>> >         Leer (P);<br>> >         //cout << P.coordx << P.coordy;<br>> >         cout <<"***" <<  RefC.AptP->coordx << RefC.AptP->coordy;<br>> >         cout <<"***" <<  P.coordx << P.coordy;<br>> >         cout << "\tDATOS DEL CIRCULO\n"<br>> >              << "\tIngresa el radio del circulo : " ;<br>> >         cin  >> RefC.Radio;<br>> >     }                               //fin de leer()<br>> >        <br>> <br>> Las funciones restantes parecidas a 'Leer()' tienen el mismo problema. <br>> La solución es usar memoria creada dinámicamente. Esto supone que tienes <br>> que liberar tal memoria al final del programa.<br>> <br>> <br>> Espero que esto te aclare la duda.<br>> <br>> Steven<br>> <br>> <br>> _______________________________________________<br>> Lista de correo Cconclase Cconclase@listas.conclase.net<br>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net<br>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ<br><br /><hr />Entérate de todo lo que hacen tus contactos <a href='http://download.live.com/messenger' target='_new'>en la parte de "novedades" de Messenger.</a></body>
</html>