Autor
|
Tema: Problema con herencia de constructores (Leído 2,953 veces)
|
Lord_Lobotomi
Desconectado
Mensajes: 4
amor => dinero
|
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 anio, char* lugar, char* raz, char* circ):mamifero(comida, anio, lugar);
void nombrecirco(); void nuevaestrella(); };
class gatodomestico : public felino { protected: char* duenio;
public: gatodomestico(){}; gatodomestico(char*);
// void nuevominino(); };
mamifero::mamifero(char* comida, int anio, char* lugar) { dieta = new char[strlen(comida)]; age = anio; nacimiento = new char[strlen(lugar)];
dieta = comida; nacimiento = lugar; }
felino::felino(char* comida, int anio, char* lugar, char* raz, char* circ):mamifero( comida, anio, 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
|
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... felino(){}; 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; }
|
|
|
En línea
|
|
|
|
armizh
Desconectado
Mensajes: 187
His brain caught in a hole...
|
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... felino(){}; 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; }
Esto es C++, no C. Pero es cierto en cierto sentido, varias veces redefine el constructor pero con diferentes argumentos. class felino : public mamifero { protected: char* raza; char* circo; public: //felino(){}; Elimina Esto! 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 void nombrecirco(); void nuevaestrella(); };
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: git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++: git clone https://github.com/armizh/Hamster
|
|
|
naderST
|
@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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Pregunta Herencia] Los constructores por defecto se Heredan???
Java
|
christmo
|
2
|
5,278
|
26 Octubre 2010, 23:10 pm
por christmo
|
|
|
Creo que tengo un problema de constructores
Programación C/C++
|
anonimo12121
|
7
|
4,713
|
6 Abril 2012, 00:46 am
por Beakman
|
|
|
Problema con herencia
.NET (C#, VB.NET, ASP)
|
PudgE
|
4
|
2,406
|
3 Mayo 2014, 00:28 am
por PudgE
|
|
|
Problema con constructores y archivos c#
.NET (C#, VB.NET, ASP)
|
Kaxperday
|
3
|
2,636
|
4 Mayo 2015, 12:50 pm
por kub0x
|
|
|
Problema con herencia múltiple[C++][?]
Programación C/C++
|
xalcoz
|
2
|
2,462
|
8 Enero 2017, 19:14 pm
por xalcoz
|
|