| |||
clases buenas tardes mi pregunta es simple, como puedo tener acceso a los mienbros de una clase, desde otra.
__________________ Solitary wolf..[email protected] |
| ||||
Respuesta: clases a ver XD lo que tienes en private solo puedes acceder desde la misma funcion. lo que tienes en public puedes acceder desde cualquier parte incluyendo desde otra clase. Entonces si en una clase en la parte privada tienes algo como un entero edad, esta claro que de otra clase no puedes tener acceso pero si en la parte publica haces una función de forma que retorne la edad si es legal.
Código C++:
No es la unica forma de hacer esto.Ver original Puedes crear un objeto tipo a dentro de b y así tener acceso. Pero basicamente lo que quiero que entiendas es que vas a tener que usar las funciones get y set de la clase, estas funciones no son mas que acceder de forma indirecta a la variable. enves de hacer esto int variable = 30; no vas a poder por que variable estará en private, pues tendras que hacer algo como esto void set( int unNumero ){ variable = unNumero; } entonces si la función set esta en la misma clase en la parte publica puedes pasar un numero a la funcion y ella se encarga de almacenar en "variable" dentro de la parte privada ;) se suele llamar set a las que ponen valor y get a las que retornan valor. tu----> int variable = 30; //Incorrecto tu--->public: void set( int unNumero ){ variable = unNumero; } ---> private: int variable; //correcto Seria asi: tu---> set(30)---> variable = 30 // tu le pasas 30 a la función y la función mete 30 a la variable que es lo mismo que tu quieres pero de forma indirecta ;) Última edición por vangodp; 17/05/2014 a las 17:32 |
| |||
Respuesta: clases vangodp, creo que no le estás contestando correctamente. Lo que le estás proponiendo es poder acceder a los miembros de una instancia de una clase que a su vez es miembro de otra. Lo que creo que busca el autor es poder hacer uso de forma directa de los miembros privados de una clase desde otra. Si es así, se hace mediante el modificador friend (Otra forma sería por herencia, pero igualmente creo que no es eso lo que pide el autor del post) Y si no era eso, pues disculpadme ambos |
| |||
Respuesta: clases Bueno, creo que el error es si consideramos el acceso a los miembros de la clase desde dentro de la clase (sus funciones) o que las instancias puedan acceder a dichos miembros. Cuando hablamos de instancias de clase, los objetos, ciertamente no pueden ni deben acceder a los miembros de la clase. Para ello los declaramos dentro de la zona private o protected. En este ejemplo:
Código C++:
Ver original Como ves, las funciones miembro, pertenecientes a la propia clase claseA, pueden acceder a a. Pero no podría hacer esto: (desde main instanciar un objeto de la clase e intentar acceder de forma directa a a
Código C++:
El compilador se quejará de que a es privado.Ver original Y como dices, he de acceder a través de una función declarada en la parte pública, la cual tiene acceso a a porque forma parte de la propia clase. Entonces, para qué sirve el modificador friend? Imagina que creamos otra clase:
Código C++:
Ver original Tanto el constructor como la función damea() de la clase claseB intentan acceder a a, que es el miembro del objeto "objeto" del tipo ClaseA. Pero nuevamente el compilador se quejará de que se quiere acceder a una parte privada. Como el constructor y la función damea() de la clase claseB no pertenecen a la clase claseA, nuevamente son funciones ajenas a dicho miembro. Para evitar esto es cuando usamos el modificador friend:
Código C++:
Ver original Ahora puedo acceder a a de forma directa, sin hacer uso de una función que retorne el valor. Obviamente, no tiene sentido usar a si no es un componente de un objeto de la clase, salvo que fuera una variable estática. Por eso tiene sentido cuando en la clase claseB tengo un objeto de la clase claseA, y quiero acceder de forma DIRECTA a sus miembros. Espero que esto ayude a ver el uso de friend un poco mejor. |
| |||
Respuesta: clases Para saltarse la privacidad de los miembros un mal diseñador de clases puede exponer los miembros privados al retornar su direccion de memoria, o una referencia a ellos.
__________________ Visita mi perfil en LinkedIn |
Etiquetas: |