elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con herencia de constructores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con herencia de constructores  (Leído 2,630 veces)
Lord_Lobotomi

Desconectado Desconectado

Mensajes: 4


amor => dinero


Ver Perfil
Problema con herencia de constructores
« en: 29 Febrero 2012, 17:06 pm »

Buenas, espero alguien pueda ayudarme con el siguiente problema, en clases me mandaron un problema de herencia y he tratado de hacerlo de la siguiente forma:

#include<iostream>
#include<string.h>

using namespace std;

class mamifero
{
    protected:
    char* dieta;
    int age;
    char* nacimiento;

    public:
    mamifero(){};
    mamifero(char*, int, char*);
    void alimento();

};

class felino : public mamifero
{
    protected:
    char* raza;
    char* circo;

    public:
    felino(){};
    felino(char* comida, int año, char* lugar, char* raz, char* circ):mamifero(comida, año, lugar);

    void nombrecirco();
    void nuevaestrella();
};

class gatodomestico : public felino
{
    protected:
    char* duenio;

    public:
    gatodomestico(){};
    gatodomestico(char*);

//    void nuevominino();
};

mamifero::mamifero(char* comida, int año, char* lugar)
{
    dieta = new char[strlen(comida)];
    age = año;
    nacimiento = new char[strlen(lugar)];

    dieta = comida;
    nacimiento = lugar;
}

felino::felino(char* comida, int año, char* lugar, char* raz, char* circ):mamifero( comida, año, lugar)
{
    raza = new char[strlen(raz)];
    circo = new char[strlen(circ)];

    raza = raz;
    circo = circ;
}

gatodomestico::gatodomestico(char* x)
{
    duenio = new char[strlen(x)];
}

void mamifero::alimento()
{
    cout<<"La dieta es leche";
}

main()
{
    bool flag = true;
    int opc;

    gatodomestico minino;
    felino estrelladecirco;

    while(flag == true)
    {
        cout<<"que desea hacer?\n";
        cout<<"1. Ingresar datos del minino y estrella de circo\n";
        cout<<"2. Imprimir la dieta del minino y estrella de circo\n";
        cout<<"3. Imprimir el año y el lugar de nacimiento\n";
        cout<<"4. Cambiar el nombre del dueño del minino\n";
        cout<<"5. Cambiar el nombre del circo de la estrella de circo";
        cout<<"6. Imprimir raza";

        cin>>opc;

        switch(opc)
        {
            case 1:
//            minino.nuevominino();
            ;

        }

    }

}

Los errores que me salen son los siguientes:

|28|error: expected ‘{’ at end of input|
|56|error: redefinición de ‘felino::felino(char*, int, char*, char*, char*)’|
|28|error: se define ‘felino::felino(char*, int, char*, char*, char*)’ previamente aquí|
||=== Build finished: 3 errors, 0 warnings ===|

Al parecer no me funcionan los constructores con la herencia simple... alguien me podria decir cual es la manera correcta de hacerlo?


En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Problema con herencia de constructores
« Respuesta #1 en: 29 Febrero 2012, 17:42 pm »

Mira ahí tienes errores de C...

1. Cuando reservas memoria te estás olvidando del espacio para el carácter nulo '\0'.
2. No puedes simplemente asignar una cadena en C, debes usar la función strcpy o strncpy de la librería estándar string.h.
3. Te da el error de redefinition porque estás definiendo dos veces el constructor de la clase felino...

Código
  1. felino(){};
  2. felino::felino(char* comida, int año, char* lugar, char* raz, char* circ):mamifero( comida, año, lugar)
  3. {
  4.    raza = new char[strlen(raz)];
  5.    circo = new char[strlen(circ)];
  6.  
  7.    raza = raz;
  8.    circo = circ;
  9. }


En línea

armizh

Desconectado Desconectado

Mensajes: 187

His brain caught in a hole...


Ver Perfil WWW
Re: Problema con herencia de constructores
« Respuesta #2 en: 1 Marzo 2012, 01:41 am »

Primero que todo, por favor usar las etiquetas GeSHi, para algo esta (y no, no es de bonito).
Segundo...
Mira ahí tienes errores de C...

1. Cuando reservas memoria te estás olvidando del espacio para el carácter nulo '\0'.
2. No puedes simplemente asignar una cadena en C, debes usar la función strcpy o strncpy de la librería estándar string.h.
3. Te da el error de redefinition porque estás definiendo dos veces el constructor de la clase felino...

Código
  1. felino(){};
  2. felino::felino(char* comida, int año, char* lugar, char* raz, char* circ):mamifero( comida, año, lugar)
  3. {
  4.    raza = new char[strlen(raz)];
  5.    circo = new char[strlen(circ)];
  6.  
  7.    raza = raz;
  8.    circo = circ;
  9. }

Esto es C++, no C. Pero es cierto en cierto sentido, varias veces redefine el constructor pero con diferentes argumentos.
Código
  1. class felino : public mamifero
  2. {
  3.    protected:
  4.    char* raza;
  5.    char* circo;
  6.  
  7.    public:
  8.    //felino(){}; Elimina Esto!
  9.    felino(char* comida, int año, char* lugar, char* raz, char* circ)//:mamifero(comida, año, lugar); esto va despues, cuando escribes el codigo del constructor
  10.  
  11.    void nombrecirco();
  12.    void nuevaestrella();
  13. };
Hay muchisimos errores, lo unico que puedo recomendarte es que uses cabeceras y archivos fuente... osino te pierdes como en este caso, la verdad es que nose como es que puedes programar asi.

Saludos
En línea

Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código
  1. git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código
  1. git clone https://github.com/armizh/Hamster
naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Problema con herencia de constructores
« Respuesta #3 en: 1 Marzo 2012, 05:22 am »

@armizh Me refiero a que está programando en C++ y está cometiendo errores ELEMENTALES de C. El problema aquí no es principalmente de herencia de constructores es de C.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Pregunta Herencia] Los constructores por defecto se Heredan???
Java
christmo 2 5,150 Último mensaje 26 Octubre 2010, 23:10 pm
por christmo
Creo que tengo un problema de constructores
Programación C/C++
anonimo12121 7 4,434 Último mensaje 6 Abril 2012, 00:46 am
por Beakman
Problema con herencia
.NET (C#, VB.NET, ASP)
PudgE 4 2,179 Último mensaje 3 Mayo 2014, 00:28 am
por PudgE
Problema con constructores y archivos c#
.NET (C#, VB.NET, ASP)
Kaxperday 3 2,418 Último mensaje 4 Mayo 2015, 12:50 pm
por kub0x
Problema con herencia múltiple[C++][?]
Programación C/C++
xalcoz 2 2,228 Último mensaje 8 Enero 2017, 19:14 pm
por xalcoz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines