[DUDA] Clases anidadas.

Iniciado por Zodiak98, 15 Mayo 2013, 00:45 AM

0 Miembros y 1 Visitante están viendo este tema.

Zodiak98

Bueno tengo una duda sobre las clases anidadas, mi duda es la siguiente:

Si creo una clase dentro de otra clase, los datos miembros de la clase interna también le pertenecen a la clase externa.?

Si yo creo una función miembro constante en la clase externa, puedo modificar las variables miembro de la clase interna o no?

Otra cosa porqué si yo al declarar el nombre de una clase en la función principal, digamos que es const las demas funciones tienen que ser const porqué si no da error, a que se debe esto? Pude concluir que es para no modificar los valores que le pase o simplemente le digo al compilador que esa variable solamente trabajara con las funciones const. Un ejemplo claro seria este:


#include <iostream>
using std::cout;
using std::endl;
class Prueba
{
private:
 int x;
public:
 Prueba(int x = 0){escribe(x);}//constructor
 int obtiene() const{return x;}//obtiene es const
 int obtiene2(){return x;}
 void escribe(int y){x = y;}
 // void escribe(int y) const{x = y;}
};
int main()
{
 Prueba num1;
 const Prueba num2(25);
 cout << num2.obtiene();
 // cout << num2.obtiene2(); //error obtiene2 no es const.
 num1 = num2;
 cout << num1.obtiene2(); //permitido num1 no es const.
}


Para resumir la tercera pregunta que dudo haya quedado clara xD Ya como les enseñe este código(No recuerdo de donde lo saque creo que de un blog >__<) En fín, le estoy diciendo al compilador que 'num2' trabajara únicamete con las funciones miembro constantes de la clase Prueba?

amchacon

#1
CitarSi creo una clase dentro de otra clase, los datos miembros de la clase interna también le pertenecen a la clase externa.?
No. Ambas clases se comunican como si se creasen por separado.

Lo ideal esque definas las dos clases por separado y luego crees el objeto en la clase:

Código (cpp) [Seleccionar]
clase Interna
{
private:
 int dato1;
 int dato2;
 //blablabla...
};

clase Externa
{
private:
 Interna Nueva; // Creando una clase dentro de otra

 //blablabla....
};

CitarSi yo creo una función miembro constante en la clase externa, puedo modificar las variables miembro de la clase interna o no?
No, una función constante no puede modificar ningún dato... Y si modificas una clase estás cambiando datos.

CitarOtra cosa porqué si yo al declarar el nombre de una clase en la función principal, digamos que es const las demas funciones tienen que ser const porqué si no da error, a que se debe esto?
Todo objeto constante se caracteriza porque no se puede modificar, la única forma que tiene el compilador de saber esto es coger las funciones que poseen el atributo const.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar