Código C++:
Ver original#include <iostream>
class Animal { //clase que va heredar todos animales
public:
// Solo poner metodos comunes entre todos animales, por ejemplo no todos animales saben ladrar, asi que ladrar no va aqui, pero todo animal tiene peso, id, nombre...
void setNombre ( std::string nombre ) { this->nombre = nombre; } //se usa para dar nombre al animal
std::string getNombre () const { return nombre; } //se usa para obtener nombre del animal
void setId ( int *id ) { this->id = id; } //se usa para apuntar a un id que relacionaremos al animal animal
int *getId() const { return this->id; } //se usa para obtener un id relacionado al animal
private:
protected:
int *id;
int annoNac;
double tamanio;
double peso;
std::string nombre;
};
class Perro: public Animal { //perro tiene todos los miembros de Animal. Se puede decir que perro es un animal =)
public:
//Los perros pueden ladrar asi que aqui si ponemos ladrar
std::string comunicar() { return "uau uau!"; }
private:
};
int main () {
//Esto es para crear un solo perro
Perro unPerro;
//puntero
int id = 47062; //numero que representa el id del perro...Perro apuntará ese entero que será su ID
unPerro.setId ( &id ); //hacemos que perro apunte el id... No hay sentido ya que el propio Animal deberia albergar el ID, pero es solo un ejemplo de como debe hacer con punteros.
unPerro.setNombre ( "Toby" );
std::cout << "Tengo un perro que se llama " << unPerro.getNombre() << " Y sabe decir: " << unPerro.comunicar() << std::endl;
std::cout << "El ID de "<< unPerro.getNombre() << " es: " << *unPerro.getId() << std::endl;
//Esto seria para crear a muchos perros
Perro *ptrPerro = new Perro[10];
// Se verifica que exista el apunte a algo
if ( !ptrPerro ){ std::cout << "Error en la asignacion" << std::endl; return 1; }
//si llegamos aqui es que tenemos el arreglo de perros, nombramos al primer perro
ptrPerro[0].setNombre("Chicho");
std::cout << "\nEl nombre del primer perro del arreglo es: " << ptrPerro[0].getNombre() << std::endl;
//destruimos el array de perros
delete [] ptrPerro;
std::cin.ignore();
return 0;
}
A ver... aquí hay todo lo que buscas creo. Solo adapta a lo que buscas y intenta entenderlo.
no necesitas instanciar la clase animal. Perro debe heredar de animal o bien debes crear un objeto Animal dentro de perro.
No tengo mucha practica con clases tampoco pero bueno XD.. Suerte