• Miércoles 15 de Mayo de 2024, 16:02

Autor Tema:  Problema Con Listas  (Leído 757 veces)

pedrojo

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Problema Con Listas
« en: Lunes 1 de Octubre de 2007, 02:57 »
0
Hola, estoy haciendo un ejemplo muy simple en C++ ya que soy novato y estoy practicando un poquillo. Mi idea es hacer una clase animal y unas subclases de animales (ej: perro, rana, gato, etc). Uno de los métodos que tiene cada animal es que puede comerse a otros animales y tenerlos en la tripa. Mi idea para implementar eso era que cada clase Animal tuviese una lista de Animales que representa lo que tiene en la tripa. Para tener por ejemplo un perro que dentro de su "tripa" tuviese un gato y una rana. Aquí os pongo el código que llevo y que me da error (me pone que la lista no tiene un tamaño fijo). Muchas gracias de antemano y siento si es una pregunta tonta, pero son novatillo, sorry.

Este es el código que llevo escrito de la clase Animal:

#ifndef animals_hxx
#define animals_hxx


#include <iostream>
#include <string>
#include <list>



class Animal
{

   typedef std::list<Animal*> Tripa;

public:
   virtual void escriuEspecie() const
   {
      std::cout << "...indefinida..." << std::endl;
   }
   
   void nom(std::string elNom)
   {
      _nom = elNom;
   }
   std::string& nom()
   {
      return _nom;
   }

/////

   virtual void comer(Animal& unAnimal)
   {
      tripa.push_back(&unAnimal);
   }
   std::list& verTripa()
   {
      std::cout << "l'animal anomenat tiene en la tripa a" << std::endl;

      for (Tripa::iterator it=tripa.begin(); it!=tripa.end(); it++)
      {
         std::cout << (*it)->nom() <<std::endl;
      }

   }
   

////


private:
   Tripa tripa;
////

private:
   std::string _nom;
};

class Perro : public Animal
{
public:
   virtual void escriuEspecie() const
   {
      std::cout << "perro" << std::endl;
   }
};

class rana: public Animal
{
public:
   virtual void escriuEspecie() const
   {
      std::cout << "rana" << std::endl;
   }
};

class Gato : public Animal
{
public:
   virtual void escriuEspecie() const
   {
      std::cout << "gato" << std::endl;
   }
};

#endif