Autor
|
Tema: herencia (Leído 2,093 veces)
|
cazagavilan
Desconectado
Mensajes: 82
|
![](https://foro.elhacker.net/Themes/converted/images/post/xx.gif) |
herencia
« en: 23 Abril 2012, 17:28 pm » |
|
Hola, De momento tengo este codigo(no esta acabado) pero ya me da error en los dos constructores (tengo un codigo donde solo sale la clase vehiculo y no me da error) y bueno a ver si me podeis ayudar por que vaya cacao llevo... #include<iostream> #include<cstring> using namespace std; //Declaracion clase VEHICULO class vehiculo { protected: char *cad; int litros; int kphMas; int kphMenos; int veloActual; int capaDepo; int año; int capDepo; int liDepo; public: vehiculo(int veloInicial, int liInicial, int capDepoInicial, int añoInicial, const char *c); ~vehiculo(); void imprimir(); void llenarDepo(); void acelerar(int kphMas); void frenar(int kphMenos); char *leer(char *c); }; //Declaracion derivada MOTO class moto : public vehiculo { protected: int cilindrada; int cilinInicial; char *tipo; public: moto(int veloInicial,int liInicial, int capDepoInicial, int añoInicial, int cilinInicial, const char* c, const char *c1); ~moto(); char* leer1(char*c1); } //Constructor VEHICULO vehiculo::vehiculo(int veloInicial, int liInicial, int capDepoInicial, int añoInicial, const char *c) { veloActual = veloInicial; liDepo = liInicial; capDepo = capDepoInicial; año = añoInicial; cad = new char[strlen(c)+1]; strcpy(cad, c); } //Destructor VEHICULO vehiculo::~vehiculo() { delete [] cad; } //Metodo leer VEHICULO char *vehiculo::leer(char* c) { strcpy(c, cad); return c; } // Metodo llenar deposito VEHICULO void vehiculo::llenarDepo() { cout << "Estas llenando el deposito..." << endl; for(; liDepo < capDepo; liDepo++) { } cout << "El deposito esta lleno: " << liDepo<< " Litros."<< endl << endl; } // Metodo imprimir VEHICULO void vehiculo::imprimir() { cout << "La velocidad actual es: "<< veloActual << endl; cout << "El año del coche es: " << año << endl; cout << "En el deposito hay: " << liDepo << endl; cout << "El nombre del propietario es: " << *cad <<endl << endl; } // Metodo acelerar VEHICULO void vehiculo::acelerar(int kphMas) { if(liDepo > 0) { cout << "Estas acelerando!" << endl; veloActual = veloActual + kphMas; liDepo = liDepo - kphMas / 10; cout << "Su velocidad actual es: " << veloActual << endl; cout << "Su deposito actual es: " << liDepo << endl << endl; } else { cout << "El deposito esta vacio!" << endl << endl; } } // Metodo frenar VEHICULO void vehiculo::frenar(int kphMenos) { if( veloActual - kphMenos > 0) { cout << "Estas frenando!" << endl; veloActual = veloActual - kphMenos; cout << "Su velocidad actual es: " << veloActual << endl << endl; } else { veloActual = 0; cout << "Ya estas parado!" << endl << endl; } } // Constructor MOTO moto::moto(int veloInicial,int liInicial, int capDepoInicial, int añoInicial, int cilinInicial,const char* c, const char *c1): vehiculo( veloInicial, liInicial, capDepoInicial, añoInicial, *c) { veloActual = veloInicial; liDepo = liInicial; capDepo = capDepoInicial; año = añoInicial; cad = new char[strlen(c)+1]; strcpy(cad, c); cilindrada = cilinInicial; tipo = new char[strlen(c1)+1]; strcpy(tipo, c1); } // Destructor Moto moto::~moto() { delete [] tipo; } // Metodo leer MOTO char *moto::leer1(char* c1) { strcpy(c1, tipo); return c1; }
Puede que haya cambiado algo de la clase base sin darme cuenta de tanto probar. Muchas gracias!
|
|
« Última modificación: 23 Abril 2012, 17:32 pm por cazagavilan »
|
En línea
|
|
|
|
Beakman
|
Compilé tu código y la mayoría de los errores eran por la letra Ñ. Luego en la definición de la clase moto faltaba un punto y coma. Y en estas líneas el último argumento que se le pasa al constructor de vehiculo tiene que ser simplemente " c" y no " *c". moto::moto(int veloInicial,int liInicial, int capDepoInicial, int anioInicial, int cilinInicial,const char* c, const char *c1): vehiculo( veloInicial, liInicial, capDepoInicial, anioInicial, c)
Aca está el código comentado: #include<iostream> #include<cstring> using namespace std; //Declaracion clase VEHICULO class vehiculo { protected: char *cad; int litros; int kphMas; int kphMenos; int veloActual; int capaDepo; int año; // Error por la letra Ñ int capDepo; int liDepo; public: vehiculo(int veloInicial, int liInicial, int capDepoInicial, int anioInicial, const char *c); // Error por la letra Ñ ~vehiculo(); void imprimir(); void llenarDepo(); void acelerar(int kphMas); void frenar(int kphMenos); char *leer(char *c); }; //Declaracion derivada MOTO class moto : public vehiculo { protected: int cilindrada; int cilinInicial; char *tipo; public: moto(int veloInicial,int liInicial, int capDepoInicial, int anioInicial, int cilinInicial, const char* c, const char *c1); // Error por la letra Ñ ~moto(); char* leer1(char*c1); }; // Faltaba el punto y coma //Constructor VEHICULO vehiculo::vehiculo(int veloInicial, int liInicial, int capDepoInicial, int anioInicial, const char *c) // Error por la letra Ñ { veloActual = veloInicial; liDepo = liInicial; capDepo = capDepoInicial; año = anioInicial; // Error por la letra Ñ cad = new char[strlen(c)+1]; strcpy(cad, c); } //Destructor VEHICULO vehiculo::~vehiculo() { delete [] cad; } //Metodo leer VEHICULO char *vehiculo::leer(char* c) { strcpy(c, cad); return c; } // Metodo llenar deposito VEHICULO void vehiculo::llenarDepo() { cout << "Estas llenando el deposito..." << endl; for(; liDepo < capDepo; liDepo++) { } cout << "El deposito esta lleno: " << liDepo<< " Litros."<< endl << endl; } // Metodo imprimir VEHICULO void vehiculo::imprimir() { cout << "La velocidad actual es: "<< veloActual << endl; cout << "El año del coche es: " << año << endl; // Error por la letra Ñ cout << "En el deposito hay: " << liDepo << endl; cout << "El nombre del propietario es: " << *cad <<endl << endl; } // Metodo acelerar VEHICULO void vehiculo::acelerar(int kphMas) { if(liDepo > 0) { cout << "Estas acelerando!" << endl; veloActual = veloActual + kphMas; liDepo = liDepo - kphMas / 10; cout << "Su velocidad actual es: " << veloActual << endl; cout << "Su deposito actual es: " << liDepo << endl << endl; } else { cout << "El deposito esta vacio!" << endl << endl; } } // Metodo frenar VEHICULO void vehiculo::frenar(int kphMenos) { if( veloActual - kphMenos > 0) { cout << "Estas frenando!" << endl; veloActual = veloActual - kphMenos; cout << "Su velocidad actual es: " << veloActual << endl << endl; } else { veloActual = 0; cout << "Ya estas parado!" << endl << endl; } } // Constructor MOTO moto::moto(int veloInicial,int liInicial, int capDepoInicial, int anioInicial, int cilinInicial,const char* c, const char *c1): // Error por la letra Ñ vehiculo( veloInicial, liInicial, capDepoInicial, anioInicial, c) // Error por la letra Ñ { veloActual = veloInicial; liDepo = liInicial; capDepo = capDepoInicial; año = anioInicial; // Error por la letra Ñ cad = new char[strlen(c)+1]; strcpy(cad, c); cilindrada = cilinInicial; tipo = new char[strlen(c1)+1]; // habia una "m" al comienzo strcpy(tipo, c1); } // Destructor Moto moto::~moto() { delete [] tipo; } // Metodo leer MOTO char *moto::leer1(char* c1) { strcpy(c1, tipo); return c1; } int main(){ return 0; }
|
|
« Última modificación: 23 Abril 2012, 19:10 pm por CrisQC »
|
En línea
|
|
|
|
cazagavilan
Desconectado
Mensajes: 82
|
Muchas gracias lo probare!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Herencia en php
PHP
|
Hadess_inf
|
2
|
6,084
|
23 Octubre 2009, 21:24 pm
por HardieVon
|
|
|
Herencia
Java
|
alzehimer_cerebral
|
4
|
3,902
|
21 Abril 2010, 02:26 am
por sapito169
|
|
|
Herencia y POO
Programación C/C++
|
Arobavx
|
0
|
2,313
|
7 Noviembre 2010, 19:44 pm
por Arobavx
|
|
|
Herencia
Java
|
m@o_614
|
6
|
4,545
|
20 Abril 2012, 00:46 am
por m@o_614
|
|
|
HERENCIA
Java
|
ALBUR
|
2
|
2,147
|
7 Mayo 2012, 10:26 am
por ALBUR
|
|