[C con Clase] Otra duda

Miguel Alejandro Jimenez Ramirez cerberbero en gmail.com
Mie Mar 12 20:17:07 CET 2014


Muchas gracias por la explicacion , sin elmbargo esto haciendo un programa
un poco largo y en algunos puntos tengo algunas dudas , por ejemplo si :
///////////*********************************
class A{
public:
//metodos y constructores
private:
//no se pueden hacer copias de la clase A
A(A const &){}
};
class B
{
public:

B(A const &c):arg(&c){}
B(B const&);

private:
//argumentos privados
A *arg;
};
class C
{
public:
//metodos y constructores
func1(A const&);
private:
//argumentos
};

void claseC:: funcion1( A &var )
{
B *temp=new B(var);
}
///////:**********

cuando hago esta operacion el compilador me dice que hay un error
no known conversion for argument 1 from 'const A' to 'A&'


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?

Gracias



2014-03-12 16:47 GMT+01:00 Salvador Pozo <salvador en conclase.net>:

> El pasado 2014-03-12 15:28:41, Miguel Alejandro jimenez escribió:
>
> MAj> Muchas gracias lo ensaye y me funciono perfectamente , de todas
> formas me
> MAj> queda la duda , ya quue no cree un metodo si no que utilice
> directamente :
> MAj> d->getI->getA() , no se si esto viole el principio de encapsulamiento
> de
> MAj> datos , estaria mejor crear este metodo? , o simplemente declarandolo
> como
> MAj> hice anteriormente seria seguro para los miembros d la clase?
>
> Hola:
>
> 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.
>
> 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.
>
> 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.
>
> Dicho esto, el método que indiqué antes debería haberse declarado como
> constante, para ser consecuentes. :)
>
> string getA() const {return d->getI()->getA();}
>
> Lo mismo se puede aplicar al método "Impr"  de la clase A, y el método
> "Ver" de la clase B.
>
> Hasta pronto.
>
> --
> Salvador Pozo (Administrador)
> mailto:salvador en conclase.net
> Blog con Clase: http://blogconclase.wordpress.com
> Con Clase: http://conclase.net
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
MIGUEL ALEJANDRO JIMENEZ R.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140312/62216d44/attachment.html>


Más información sobre la lista de distribución Cconclase