Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Utilizacion de struct c++

Estas en el tema de Utilizacion de struct c++ en el foro de C/C++ en Foros del Web. Hola, que tal. Tengo una duda. Defino un struct dentro de una clase. Puedo yo dentro de otra clase definir otro struct que en su ...
  #1 (permalink)  
Antiguo 06/12/2013, 23:27
Avatar de yadderace  
Fecha de Ingreso: marzo-2012
Mensajes: 12
Antigüedad: 10 años, 4 meses
Puntos: 0
Utilizacion de struct c++

Hola, que tal.
Tengo una duda. Defino un struct dentro de una clase.
Puedo yo dentro de otra clase definir otro struct que en su interior posea al struct de la primera clase?
Como podría realizarlo.
Cualquier idea es válida. Muchas Gracias.
  #2 (permalink)  
Antiguo 07/12/2013, 01:09
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 8 años, 10 meses
Puntos: 38
Respuesta: Utilizacion de struct c++

Código C++:
Ver original
  1. #include <iostream>
  2. #include <windows.h>
  3.  
  4. using namespace std;
  5.  
  6. class perro {
  7.     public:
  8.         int dame_caracteristicas () { return datos.anio; }
  9.     private:
  10.         struct caracteristicas{
  11.             int anio=3;
  12.         } datos;
  13. };
  14.  
  15. class gato {
  16.     private:
  17.        
  18.     public:
  19.         perro composicion;    //  Llamo a esta variable de tipo "perro" y
  20.                           // accedo a todo lo que contiene perro, pero lo debo de acceder
  21.                           // por la parte bublic, ya que no se puede acceder a la parte privada.
  22.                           //  A esto se le dice composición. Quizás quieras saber también algo sobre agregación.
  23.                           //  No se mucho sobre el tema por que soy novatin >< "Neo yo solo
  24.                           // puedo enseñarte la puerta....tu es quien debes atravesar XD"
  25. };
  26.  
  27.  
  28.  
  29. int main (){
  30.    
  31.     gato mike;
  32.    
  33.     cout << mike.composicion.dame_caracteristicas ();
  34.  
  35.     system("pause>null");
  36.     return 0;
  37. }

Última edición por vangodp; 07/12/2013 a las 01:18
  #3 (permalink)  
Antiguo 07/12/2013, 01:50
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 8 años, 10 meses
Puntos: 38
Respuesta: Utilizacion de struct c++

Debo de decirte que es escaso el material sobre sobre composición en internet lo que esta por ahi me deja mas dudas que me ayudan a entender sobre eso.
Si encuentras algo bueno favor enviadme un mail XD
  #4 (permalink)  
Antiguo 07/12/2013, 04:01
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 8 años, 10 meses
Puntos: 38
Respuesta: Utilizacion de struct c++

Bueno eh estado leyendo sobre el tema y así por encima va mas o menos así XD

Agregación y composición en lo que se refiere a código es lo mismo(O bien no se diferencia uno de otro).

Pero agregación y composición son diferentes conceptos.

Composición:
Si un objeto A esta esta compuesto por un segundo objeto B ya sabemos lo que es..."composición".
El tiempo de vida del objeto B esta condicionado por el tiempo de vida del objeto A (B no existe sin A).
Un coche esta compuesto por ruedas, puerta motor(Un coche tiene un....).
Si elimino el todo sus partes también dejan de existir o no servirían.
¿Queda claro lo que es composición? :D

Agregación:
Es cuando agregamos varios objetos B, C, D... para formar un objeto A.
Ejemplo: agregamos una pantalla, un ratón, un disco duro y muchos mas objetos para formar un ordenador.
Se puede decir que ordenador tiene una pantalla, tiene un disco duro, tiene un ratón...(Tiene un/uno/una...)
¿Queda claro que es agregación?

Bien, miremos otros aspectos que diferencian agregación de composición:
El tiempo de vida del los objetos B, C o D no esta condicionado por el tiempo de vida del objeto A
(B, C, D... siguen existiendo aun que A desaparezca).
Pantalla, ratón y teclado siguen existiendo aun que eliminemos ordenador.
El Todo no influencia en las partes.

Lo que se refiere a código es lo mismo, es el concepto como dije antes el que varia.
Mas o menos ya sabemos cual elegir en determinado caso.

Si se supone que la programación orientada a objeto se basa en re-aprovechar el código hay que tener bien claro este concepto por que imaginemos que creamos una clase que depende de muchas otras, o que no funcione sin muchas clases asociadas seria una ruina re-aprovechar algunos códigos.

Deberías leer algo sobre uml o conceptos de POO, y por supuesto yo también XD

Saludos y mucha suerte! XD

PD: Asociacion:
Es la relación entre clases(Una clase depende de otra).
Agregación/Composición es un tipo derivado de esa relación.

Última edición por vangodp; 07/12/2013 a las 04:08
  #5 (permalink)  
Antiguo 08/12/2013, 15:35
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: Utilizacion de struct c++

Sólo se me ocurre que puedas definir una instancia de la estructura creada en la primera clase. Algo como:
Código:
class A
{
    public:
    struct stA
    {
        //............
    };
};

class B
{
    struct stB
    {
        class A::stA instancia;
    };
};
¿Exáctamente qué quieres conseguir? Es que una vez definido un struct, no tienes que volver a definirlo. Otra cosa es que te interese tener un struct igual en la segunda clase, en ese caso lo vuelves a crear pero será un miembro diferente al primero. En fin, también estoy espeso y no sé cual es realmente tu idea.
Volviendo sobre la idea, lo más fácil es definir el struct al principio y luego incluir instancias del mismo en cada clase:
Código:
struct S
{
    //...............
};

class A
{
    S cA;
};

class B
{
    struct stB
    {
        S cB;
    };
};

Etiquetas: c++, clases, estructuras, struct
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:01.