Structs anidados en Union

Iniciado por DonCuervo, 13 Septiembre 2017, 17:31 PM

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

DonCuervo

Buenos días, me encuentro realizando una actividad de estructura de datos, donde necesito anidar 3 estructuras dentro de una union pero a la hora de querer ingresar datos me tira un error.
#include <iostream>

using namespace std;

const int n=50;

struct autos
    {
        string nom;
        string dir;
        float mon;
        float men;
        float ded;
        int lic;
        string edo;
        string mod;
        int año;
        ///Constructor
        autos(){
            nom="0";
            dir="0",
            mon=0;
            men=0;
            ded=0;
            lic=0;
            edo="0";
            mod="0";
            año=0;
            }
    };
struct casa
    {
        string nom;
        string dir;
        float mon;
        float men;
        float ded;
        int ant;
        bool seg;
        ///Constructor
        casa(){
            nom="0";
            dir="0";
            mon=0;
            men=0;
            ded=0;
            ant=0;
            seg=false;
        }
    };
struct vida
    {
        string nom;
        string dir;
        float mon;
        float men;
        ///Constructor
        vida(){
            nom="0";
            dir="0";
            mon=0;
            men=0;
        }
    };

union polizas
{
    struct autos;
    struct casa;
    struct vida;

};
polizas pol[n];

int insertar(int tipo,int ind);

int main()
{
    int ind=0;
    ind=insertar(1,ind);

}

int insertar(int tipo,int ind)
{
    if(tipo==1){
        cout<<"Seguro de auto"<<endl;
        cout<<"Ingrese su nombre"<<endl;
           pol[ind].autos.autos(ind);
    }
    ind++;
    return ind;
}

Como tendría que manejar la union en este caso?

Yeralb

ni idea pero yo necesito realizar un programa en Dev++ que sea tipo test de conocimiento donde se realicen 5 preguntas todas con opcion multiple de respuesta es decir a,b o c y que te de un punto por cada respuesta correcta y al final te diga si eres culto, poco culto o ignorante necesito ayudaaaaaaa

ivancea96

Cita de: Yeralb en 13 Septiembre 2017, 18:00 PM
ni idea pero yo necesito realizar un programa en Dev++ que sea tipo test de conocimiento donde se realicen 5 preguntas todas con opcion multiple de respuesta es decir a,b o c y que te de un punto por cada respuesta correcta y al final te diga si eres culto, poco culto o ignorante necesito ayudaaaaaaa
Si quieres ayuda con alguna duda concreta, haz un tema, pero no respondas a otros.



Las uniones son algo complicadas cuando las utilizas con clases. Tienes string dentro de la union. string tiene un constructor y un destructor, además de almacenar datos fuera de la union.

En fin, no me voy a liar: trata de usar de momento solo tipos nativos y punteros en las union.

MAFUS

#3
Mezclas C y C++, además de que confundes tipo con variable.
En tu union dices:
Código (c++) [Seleccionar]
union polizas
{
   struct autos;
   ...
};


Las uniones, al declararlas necesitan indicar qué nombres tomaran las variables que habrá dentro. 'struct autos' solo es un tipo de dato, falta el nombre de la variable.

Después usas mal una función. Tu dices:
pol[ind].autos.autos(ind);
Pasas a la función autos un argumento cuándo aquí
Código (c++) [Seleccionar]
struct autos
   {
       ...
       autos(){
       ...
   }

no hay argumento y no se puede inferir.