• Jueves 14 de Noviembre de 2024, 04:43

Autor Tema:  Problemas con maps  (Leído 810 veces)

nika537

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Problemas con maps
« en: Miércoles 26 de Agosto de 2009, 18:52 »
0
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;
}
}

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problemas con maps
« Respuesta #1 en: Miércoles 26 de Agosto de 2009, 21:18 »
0
Código: C++
  1. Joc *j = new Joc;
  2. j->OmpleBD();
  3. j->OmpleBD();
  4. j->Treu();
  5.  

Eso parece ir bien, depuralo con el resto del codigo que ya tenes.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

nika537

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Problemas con maps
« Respuesta #2 en: Sábado 29 de Agosto de 2009, 19:26 »
0
Gracias por contestar. El problema estaba en el menu que cree para llamar a las funciones.

Merci!!!

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problemas con maps
« Respuesta #3 en: Sábado 29 de Agosto de 2009, 21:15 »
0
De nada.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.