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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


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

Desconectado Desconectado

Mensajes: 82


Ver Perfil
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...

Código
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4. //Declaracion clase VEHICULO
  5. class vehiculo
  6. {
  7. protected:
  8. char *cad;
  9. int litros;
  10. int kphMas;
  11. int kphMenos;
  12. int veloActual;
  13. int capaDepo;
  14. int año;
  15. int capDepo;
  16. int liDepo;
  17. public:
  18. vehiculo(int veloInicial, int liInicial, int capDepoInicial, int añoInicial, const char *c);
  19. ~vehiculo();
  20. void imprimir();
  21. void llenarDepo();
  22. void acelerar(int kphMas);
  23. void frenar(int kphMenos);
  24. char *leer(char *c);
  25. };
  26.  
  27. //Declaracion derivada MOTO
  28. class moto : public vehiculo
  29. {
  30. protected:
  31. int cilindrada;
  32. int cilinInicial;
  33. char *tipo;
  34. public:
  35. moto(int veloInicial,int liInicial, int capDepoInicial, int añoInicial,  int cilinInicial, const char* c, const char *c1);
  36. ~moto();
  37. char* leer1(char*c1);
  38. }
  39.  
  40. //Constructor VEHICULO
  41. vehiculo::vehiculo(int veloInicial, int liInicial, int capDepoInicial, int añoInicial, const char *c)
  42. {
  43. veloActual = veloInicial;
  44. liDepo = liInicial;
  45. capDepo = capDepoInicial;
  46. año = añoInicial;
  47. cad = new char[strlen(c)+1];
  48. strcpy(cad, c);
  49.  
  50. }
  51.  
  52. //Destructor VEHICULO
  53. vehiculo::~vehiculo()
  54. {
  55. delete [] cad;
  56. }
  57.  
  58. //Metodo leer VEHICULO
  59. char *vehiculo::leer(char* c)
  60. {
  61. strcpy(c, cad);
  62. return c;
  63. }
  64.  
  65. // Metodo llenar deposito  VEHICULO
  66. void vehiculo::llenarDepo()
  67. {
  68. cout << "Estas llenando el deposito..." << endl;
  69. for(; liDepo < capDepo; liDepo++)
  70. {
  71. }
  72. cout << "El deposito esta lleno: " << liDepo<< " Litros."<< endl << endl;
  73. }
  74.  
  75. // Metodo imprimir VEHICULO
  76. void vehiculo::imprimir()
  77. {
  78. cout << "La velocidad actual es: "<< veloActual << endl;
  79. cout << "El año del coche es: " << año << endl;
  80. cout << "En el deposito hay: " << liDepo << endl;
  81. cout << "El nombre del propietario es: " << *cad <<endl << endl;
  82. }
  83.  
  84. // Metodo acelerar VEHICULO
  85. void vehiculo::acelerar(int kphMas)
  86. {
  87. if(liDepo > 0)
  88. {
  89. cout << "Estas acelerando!" << endl;
  90.    veloActual = veloActual + kphMas;
  91.    liDepo = liDepo - kphMas / 10;
  92.    cout << "Su velocidad actual es: " << veloActual << endl;
  93.    cout << "Su deposito actual es: " << liDepo << endl << endl;
  94. }
  95. else
  96. {
  97. cout << "El deposito esta vacio!" << endl << endl;
  98. }
  99. }
  100.  
  101. // Metodo frenar VEHICULO
  102. void vehiculo::frenar(int kphMenos)
  103. {
  104. if( veloActual - kphMenos > 0)
  105. {
  106. cout << "Estas frenando!" << endl;
  107. veloActual = veloActual - kphMenos;
  108. cout << "Su velocidad actual es: " << veloActual << endl << endl;
  109. }
  110. else
  111. {
  112. veloActual = 0;
  113. cout << "Ya estas parado!" << endl << endl;
  114. }
  115. }
  116.  
  117. // Constructor MOTO
  118. moto::moto(int veloInicial,int liInicial, int capDepoInicial, int añoInicial,  int cilinInicial,const char* c,  const char *c1):
  119. vehiculo( veloInicial,  liInicial,  capDepoInicial, añoInicial, *c)
  120. {
  121. veloActual = veloInicial;
  122. liDepo = liInicial;
  123. capDepo = capDepoInicial;
  124. año = añoInicial;
  125. cad = new char[strlen(c)+1];
  126. strcpy(cad, c);
  127. cilindrada = cilinInicial;
  128. tipo = new char[strlen(c1)+1];
  129. strcpy(tipo, c1);
  130. }
  131.  
  132. // Destructor Moto
  133. moto::~moto()
  134. {
  135. delete [] tipo;
  136. }
  137.  
  138. // Metodo leer MOTO
  139. char *moto::leer1(char* c1)
  140. {
  141. strcpy(c1, tipo);
  142. return c1;
  143. }
  144.  


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

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: herencia
« Respuesta #1 en: 23 Abril 2012, 19:08 pm »

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".
Código
  1. moto::moto(int veloInicial,int liInicial, int capDepoInicial, int anioInicial,  int cilinInicial,const char* c,  const char *c1):
  2. vehiculo( veloInicial,  liInicial,  capDepoInicial, anioInicial, c)

Aca está el código comentado:

Código
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4. //Declaracion clase VEHICULO
  5. class vehiculo
  6. {
  7. protected:
  8. char *cad;
  9. int litros;
  10. int kphMas;
  11. int kphMenos;
  12. int veloActual;
  13. int capaDepo;
  14. int año; // Error por la letra Ñ
  15. int capDepo;
  16. int liDepo;
  17. public:
  18. vehiculo(int veloInicial, int liInicial, int capDepoInicial, int anioInicial, const char *c); // Error por la letra Ñ
  19. ~vehiculo();
  20. void imprimir();
  21. void llenarDepo();
  22. void acelerar(int kphMas);
  23. void frenar(int kphMenos);
  24. char *leer(char *c);
  25. };
  26.  
  27. //Declaracion derivada MOTO
  28. class moto : public vehiculo
  29. {
  30. protected:
  31. int cilindrada;
  32. int cilinInicial;
  33. char *tipo;
  34. public:
  35. moto(int veloInicial,int liInicial, int capDepoInicial, int anioInicial,  int cilinInicial, const char* c, const char *c1); // Error por la letra Ñ
  36. ~moto();
  37. char* leer1(char*c1);
  38. }; // Faltaba el punto y coma
  39.  
  40. //Constructor VEHICULO
  41. vehiculo::vehiculo(int veloInicial, int liInicial, int capDepoInicial, int anioInicial, const char *c) // Error por la letra Ñ
  42. {
  43. veloActual = veloInicial;
  44. liDepo = liInicial;
  45. capDepo = capDepoInicial;
  46. año = anioInicial; // Error por la letra Ñ
  47. cad = new char[strlen(c)+1];
  48. strcpy(cad, c);
  49.  
  50. }
  51.  
  52. //Destructor VEHICULO
  53. vehiculo::~vehiculo()
  54. {
  55. delete [] cad;
  56. }
  57.  
  58. //Metodo leer VEHICULO
  59. char *vehiculo::leer(char* c)
  60. {
  61. strcpy(c, cad);
  62. return c;
  63. }
  64.  
  65. // Metodo llenar deposito  VEHICULO
  66. void vehiculo::llenarDepo()
  67. {
  68. cout << "Estas llenando el deposito..." << endl;
  69. for(; liDepo < capDepo; liDepo++)
  70. {
  71. }
  72. cout << "El deposito esta lleno: " << liDepo<< " Litros."<< endl << endl;
  73. }
  74.  
  75. // Metodo imprimir VEHICULO
  76. void vehiculo::imprimir()
  77. {
  78. cout << "La velocidad actual es: "<< veloActual << endl;
  79. cout << "El año del coche es: " << año << endl; // Error por la letra Ñ
  80. cout << "En el deposito hay: " << liDepo << endl;
  81. cout << "El nombre del propietario es: " << *cad <<endl << endl;
  82. }
  83.  
  84. // Metodo acelerar VEHICULO
  85. void vehiculo::acelerar(int kphMas)
  86. {
  87. if(liDepo > 0)
  88. {
  89. cout << "Estas acelerando!" << endl;
  90.    veloActual = veloActual + kphMas;
  91.    liDepo = liDepo - kphMas / 10;
  92.    cout << "Su velocidad actual es: " << veloActual << endl;
  93.    cout << "Su deposito actual es: " << liDepo << endl << endl;
  94. }
  95. else
  96. {
  97. cout << "El deposito esta vacio!" << endl << endl;
  98. }
  99. }
  100.  
  101. // Metodo frenar VEHICULO
  102. void vehiculo::frenar(int kphMenos)
  103. {
  104. if( veloActual - kphMenos > 0)
  105. {
  106. cout << "Estas frenando!" << endl;
  107. veloActual = veloActual - kphMenos;
  108. cout << "Su velocidad actual es: " << veloActual << endl << endl;
  109. }
  110. else
  111. {
  112. veloActual = 0;
  113. cout << "Ya estas parado!" << endl << endl;
  114. }
  115. }
  116.  
  117. // Constructor MOTO
  118. moto::moto(int veloInicial,int liInicial, int capDepoInicial, int anioInicial,  int cilinInicial,const char* c,  const char *c1): // Error por la letra Ñ
  119. vehiculo( veloInicial,  liInicial,  capDepoInicial, anioInicial, c) // Error por la letra Ñ
  120. {
  121. veloActual = veloInicial;
  122. liDepo = liInicial;
  123. capDepo = capDepoInicial;
  124. año = anioInicial; // Error por la letra Ñ
  125. cad = new char[strlen(c)+1];
  126. strcpy(cad, c);
  127. cilindrada = cilinInicial;
  128. tipo = new char[strlen(c1)+1]; // habia una "m" al comienzo
  129. strcpy(tipo, c1);
  130. }
  131.  
  132. // Destructor Moto
  133. moto::~moto()
  134. {
  135. delete [] tipo;
  136. }
  137.  
  138. // Metodo leer MOTO
  139. char *moto::leer1(char* c1)
  140. {
  141. strcpy(c1, tipo);
  142. return c1;
  143. }
  144.  
  145. int main(){
  146. return 0;
  147. }
  148.  


« Última modificación: 23 Abril 2012, 19:10 pm por CrisQC » En línea

cazagavilan

Desconectado Desconectado

Mensajes: 82


Ver Perfil
Re: herencia
« Respuesta #2 en: 23 Abril 2012, 19:14 pm »

Muchas gracias lo probare!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Herencia en php
PHP
Hadess_inf 2 6,075 Último mensaje 23 Octubre 2009, 21:24 pm
por HardieVon
Herencia
Java
alzehimer_cerebral 4 3,896 Último mensaje 21 Abril 2010, 02:26 am
por sapito169
Herencia y POO
Programación C/C++
Arobavx 0 2,308 Último mensaje 7 Noviembre 2010, 19:44 pm
por Arobavx
Herencia
Java
m@o_614 6 4,531 Último mensaje 20 Abril 2012, 00:46 am
por m@o_614
HERENCIA
Java
ALBUR 2 2,142 Último mensaje 7 Mayo 2012, 10:26 am
por ALBUR
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines