<div dir="ltr"><div><div>Muchas gracias por la explicacion , sin elmbargo esto haciendo un programa un poco largo y en algunos puntos tengo algunas dudas , por ejemplo si :<br>///////////*********************************<br>
</div><div>class A{<br></div><div>public:<br>//metodos y constructores<br></div><div>private:<br></div><div>//no se pueden hacer copias de la clase A<br></div><div>A(A const &){}<br></div><div>};<br></div><div>class B<br>
</div><div>{<br></div><div>public:<br><br>B(A const &c):arg(&c){}<br></div><div>B(B const&);<br><br></div><div>private:<br></div><div>//argumentos privados<br></div><div>A *arg;<br></div><div>};<br><div>class C<br>
</div>{<br>public:<br>//metodos y constructores<br></div><div>func1(A const&);<br></div><div>private:<br></div><div>//argumentos<br></div><div>};<br><br></div>void claseC:: funcion1( A &var )<br>{<br></div>B *temp=new B(var);<br>
<div>}<br>///////:**********<br><br></div><div>cuando hago esta operacion el compilador me dice que hay un error<br>no known conversion for argument 1 from ‘const A’ to ‘A&’<br><br><br></div><div>pero si en cambio cambio los parametros del constructor copia en la clase B , asi : B(A const &) , no me genera un error , y no si si esto sea logico ya que tengo que hacer un constructor copia en la clase B , podria alguien decirme que estoy haciendo mal?<br>
<br></div><div>Gracias<br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-03-12 16:47 GMT+01:00 Salvador Pozo <span dir="ltr"><<a href="mailto:salvador@conclase.net" target="_blank">salvador@conclase.net</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">El pasado 2014-03-12 15:28:41, Miguel Alejandro jimenez escribió:<br>
<br>
MAj> Muchas gracias lo ensaye y me funciono perfectamente , de todas formas me<br>
MAj> queda la duda , ya quue no cree un metodo si no que utilice directamente :<br>
MAj> d->getI->getA() , no se si esto viole el principio de encapsulamiento de<br>
MAj> datos , estaria mejor crear este metodo? , o simplemente declarandolo como<br>
MAj> hice anteriormente seria seguro para los miembros d la clase?<br>
<br>
Hola:<br>
<br>
Si usaste esa expresión directamente, es porque lo hiciste desde el interior de la clase C, es decir, desde uno de sus métodos.<br>
<br>
La función miembro de la que hablaba en el mensaje anterior la necesitarás para acceder desde fuera de la clase, por ejemplo, desde main, o desde cualquier otro objeto.<br>
<br>
El uso que has hecho de la expresión no viola el encapsulamiento, ya que accedes a un miembro privado, pero sólo desde su misma clase.<br>
<br>
Dicho esto, el método que indiqué antes debería haberse declarado como constante, para ser consecuentes. :)<br>
<br>
string getA() const {return d->getI()->getA();}<br>
<br>
Lo mismo se puede aplicar al método "Impr"  de la clase A, y el método "Ver" de la clase B.<br>
<div class="HOEnZb"><div class="h5"><br>
Hasta pronto.<br>
<br>
--<br>
Salvador Pozo (Administrador)<br>
mailto:<a href="mailto:salvador@conclase.net">salvador@conclase.net</a><br>
Blog con Clase: <a href="http://blogconclase.wordpress.com" target="_blank">http://blogconclase.wordpress.com</a><br>
Con Clase: <a href="http://conclase.net" target="_blank">http://conclase.net</a><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>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>MIGUEL ALEJANDRO JIMENEZ R.<br>
</div>