Tema: Ayuda
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/05/2010, 12:51
Avatar de gvite666
gvite666
 
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años, 9 meses
Puntos: 4
Respuesta: Ayuda

tu primer error esta aqui
void Cuadrado::visualizar()
{
printf("El area es: %d
", area); //aqui te faltan os parentesis de tu funcion "area()"
printf("El perimetro es:%d
", perimetro); //lo mismo "perimetro()"

}
Segundo error
unsigned int Cuadrado::area()
{
lado = lado * lado; //aqui le estas diciciendo que al lado lo multipliques por si mismo en este caso 3*3 y que se lo asignes a la misma variable, entonces lado vale 9
return lado;
}


unsigned int Cuadrado::perimetro()
{
lado = lado * 4; //y que pasa aqui, que como primero mandas a llamar al metodo area tu lado ya no vale 3 sino 9 y que le dices aqui que a 9 lo multipliques por 4 y esto te dara 36, resultado que avio es invalido
return lado;
}
entonces si no quieres que cambie tu variable utiliza variables locales a la hora de asignarlas.

y el siguiente error es a la hora de hacer tus clases
no se como te explicaron la manera de entrar a la orientacion de objetos y la heredacion
ya que en tu programa heredas de una clase que esta al mismo nivel que tu otra clase, esto es
para poder heredar necesitas de una clase padre la cual tiene metodos similares a tus clases hijas, en este caso podrias poner una clase llamada figura en la cua sus metodos serian,
la visualizacion, y como clases hijas podrias poner ya lo que seria tu cuadrado y tu rectangulo con sus respectivos metodos de area y perimetro.

para lo de las clases abstractas lo unico que deves hacer es poner tus metodos de area y perimetro en la clase padre con la palabra reservada virtual ejemplo

virtual unsigned int area()=0;
virtual unsigned int perimetro()=0;

y despues definirlas en las clases hijas

Espero te ayude esto. saludos