Dev - C++ - problema con listas

 
Vista:

problema con listas

Publicado por pedrojo (1 intervención) el 01/10/2007 19:36:36
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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problema con listas

Publicado por master (1 intervención) el 28/11/2007 16:23:22
sobre el problema:
documentate bien sobre el #include <list> q es de la STL, primero te informas bien.
o eso o implementas una sencilla lista enlazada (que hay ejemplos a miles en internet)

nada q ver con el problema:
arriba debajo de iostream declara:

using namespace std;

así te evita poner esto;
std::cout << "gato" << std::endl;
y pones simplemente:
cout << "gato" << endl;

y asi en todos los
std::
te los evita

veras que te ayudara! y hara mas sencillo de leer tu codigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar