Problemas con maps

nika537
23 de Agosto del 2009
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...

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;
}
}