2
« en: Miércoles 26 de Agosto de 2009, 18:52 »
Tengo un problema con este map y no sé porque no guarda los datos que le doy.
El caso es que desde un TAD tengo que crear un map para que haga diferentes funciones que le mandare desde un menu en el main. Una de ellas es guardar fichas con su numero de identificacion y otro TAD "fitxa" (con toda la informacion sobre esta).
El problema es que me las guarda cuando llamo a la funcion "OmpleBD" pero cuando desde el menu pido, por ejemplo, sacar la informacion del map me dice que esta vacio, incluso cuando pido meter una segunda ficha el tamaño del map es 0.
Si alguien me puede ayudar...llevo varios dias con el mismo problema y no doy con la solucion.
Aqui os dejo mi codigo. Si necesitais saber algo más, por favor preguntadme.
----------------------------------------
----------------------------------------
//Joc.h
#ifndef Joc_H
#define Joc_H
#include<iostream>
#include<map>
#include "Fitxa.h"
#include "error.h"
using namespace std;
class Joc
{
public:
typedef pair <int, Fitxa> BD;
private:
map<int, Fitxa> mbd;
public:
//Constructor
Joc();
int OmpleBD ();
int Treu ();
};
#endif
------------------------------------
------------------------------------
//Joc.cpp
#include "Joc.h"
//Constructor
Joc::Joc()
{}
//Retorna un int para saber si se ha producido un error
int Joc::OmpleBD ()
{
Fitxa Fi;
cin>>Fi;
int ID = Fi.getID();
map<int, Fitxa>::iterator iter=mbd.find(ID);
if(iter!=mbd.end())
{
return error::JA_EXISTEIX;
}
else
{
mbd.insert(map<int, Fitxa>::value_type(ID, Fi));
return error::OK;
}
int Joc::Treu()
{
int size=mbd.size();
if(size==0) {return error::NO_HI_HA_RES_A_LA_BD;}
else
{
map <int, Fitxa>::iterator iter=mbd.begin();
while(iter!=mbd.end())
{
cout<<iter->second;
iter++;
}
return error::OK;
}
}