Estoy escriviendo un programa para la facultad pero me quede trabado con un problema espero que me puedan ayudar.
Aca pongo el codigo del programa:
.h
#include "Lista.h"
#include "Hormiga.h"
class Hormiga;
class ListaHormigas{
private:
Lista<Hormiga*>* listaHormigas;
public:
ListaHormigas(); //post:crea la lista de hormigas vacia
ListaHormigas(Hormiga*); //Post:crea la lista de hormigas con la hormga indicada
~ListaHormigas(); //post:livera todo
void agregarHormiga(Hormiga*); //post:agrega una hormiga a la lista de hormigas
void moverTodas(); //Pre: tiene hormigas cargadas
//post:todas las hormigas hicieron sus movimientos
private:
void setListaHomigas(Lista<Hormiga*>*); //post:Cambia la posicion a la que apunta el puntero listaHOrmigas
Lista<Hormiga*>* getListaHormigas(); //post:devuelve la posicion a la que esta apuntado listaHormigas
Hormiga** crearEstructuraAletoriaRecorridoHormigas(); //Pre:ya tiene hormigas cargadas
cpp
#include "ListaHormigas.h"
#include <stdlib.h>
#include <time.h>
ListaHormigas::ListaHormigas()
{
//inicializo la funcion para los random
srand(time(NULL));
//creo la lista para la lista de hormigas
this->setListaHomigas(new Lista<Hormiga*>);
}
ListaHormigas::ListaHormigas(Hormiga* hormiga)
{
//inicializo la funcion para los random
srand(time(NULL));
//creo la lista para la lista de hormigas
this->setListaHomigas(new Lista<Hormiga*>);
//ingreso el dato
this->agregarHormiga(hormiga);
}
ListaHormigas::~ListaHormigas()
{
/* //livero los recursos ocupados por las hormigas
IteradorLista iterador=this->getListaHormigas()->iterador();
while(iterador.tieneSiguiente())
{
delete iterador.siguiente();
} */
//livero los recursos de la lista creada
delete this->getListaHormigas();
}
void ListaHormigas::agregarHormiga(Hormiga* hormiga)
{
//agrego la hormiga a la lista
this->getListaHormigas()->agregar(hormiga);
}
void ListaHormigas::moverTodas()
{
//Declaro una variable y la inicialiso con la cantidad de hormigas
int tamanio=this->getListaHormigas()->tamanio();
//le cargo el vector odenado aleatoriamente con la hormigas para ser procesado
Hormiga** vectorHormigasAleatorio = this->crearEstructuraAletoriaRecorridoHormigas; //error
//proceso todas las hormigas del vector
for(int i=0;i<tamanio;i++)
{
vectorHormigasAleatorio[i]->hacerMovimiento();
}
//livero los recurso ocupados por el vector
delete vectorHormigasAleatorio; // como se hace para liverar esto????????????????????
}
void ListaHormigas::setListaHomigas(Lista<Hormiga*>* punteroListaHormigas)
{
this->listaHormigas=punteroListaHormigas;
}
Lista<Hormiga*>* ListaHormigas::getListaHormigas()
{
return this->listaHormigas;
}
Hormiga** ListaHormigas::crearEstructuraAletoriaRecorridoHor migas()
{
//averiguo la cantidad de hormigas
int tamanioListaHormigas=this->getListaHormigas()->tamanio();
//creo un vertor de punteros para alocar a todas las hormigas
Hormiga** estructuraOrdenadaAleatoriamente = new Hormiga*[tamanioListaHormigas];
//inicialzo todas las posiciones a NULL
for(int i=0; i<tamanioListaHormigas; i++)
estructuraOrdenadaAleatoriamente[i]=NULL;
//creo un iterador para recorrer la lista
IteradorLista<Hormiga*> iterador=this->getListaHormigas()->iterador();
int random, Auxiliar;
//recorro la lista y a cada hormiga la voy agregando aleatoriamente en la lista
while(iterador.tieneSiguiente())
{
//mientra la posicion este ocupada busco otra
do
{
//obtengo el numero aleatorio de la pocicion del vector
random=rand()*tamanioListaHormigas;
}
while (estructuraOrdenadaAleatoriamente[random]!=NULL);
//ingredo la hormiga en el vector
estructuraOrdenadaAleatoriamente[random]=iterador.siguiente();
}
return estructuraOrdenadaAleatoriamente;
}
el error que me tira es el siguiente:
error: argument of type `Hormiga**(ListaHormigas::)()' does not match `Hormiga**'
¿lo que pasa es que se puensa que es una instacia a metodo?
Gracias Andres