Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problema con las STL de C++ map y list

Estas en el tema de Problema con las STL de C++ map y list en el foro de Programación General en Foros del Web. Hola a todos, Hace poco que he iniciado un cursillo sobre las STL de C++ y me han propuesto realizar un ejercicio. Tengo que crear ...
  #1 (permalink)  
Antiguo 02/01/2006, 11:02
 
Fecha de Ingreso: enero-2006
Mensajes: 2
Antigüedad: 18 años, 4 meses
Puntos: 0
Problema con las STL de C++ map y list

Hola a todos,

Hace poco que he iniciado un cursillo sobre las STL de C++ y me han propuesto realizar un ejercicio. Tengo que crear una base de datos utilizando un map.

El map tiene que contener un objeto telefono mobil (mobil) como clave y una list de floats que representan los gastos del telefono (listaGastos).

Para realizar la practica he realizado una classe mobil.cpp y una classe ListaGastos.cpp que solo tiene por ahora un constructor:

ListaGastos::ListaGastos()
{
list<float> ListaGastos;
}


Seguidamente he realizado la classe mapMobil que tiene que tener el costructor del map de telefonos mobiles y listas de gastos, y diversos metodos como añadir telefono etc... para poder utilizarlos posteriormente en un main

En la classe mapMobil he hecho este constructor

MapMobil::MapMobil()
{
map <mobil, ListaGastos> mapMobil;
}


Seguidamente intento crear un metodo para añadir un mobil con una lista de gastos vacia de la siguiente manera:

void MapMobil::AñadirMobil(const mobil &m)
{
ListaGastos Lg;

pair<mobil, ListaGastos> a;
a.first = m;
a.second = Lg;
MapMobil.insert(a);


}


Y al compilar me da los siguientes errores:

MapMobil undeclared first use this function (en la linia MapMobil.insert(a);)

Como puedo solucionar esto?

Gracias por vuestra atencion!
  #2 (permalink)  
Antiguo 02/01/2006, 11:16
Usuario baneado!
 
Fecha de Ingreso: febrero-2005
Mensajes: 116
Antigüedad: 19 años, 2 meses
Puntos: 0
El error es simple, MapMobil es una clase que has creado tú, y no contiene ninguna función miembro "insert". Estás confundiendo tu clase (MapMobil) con la instancia de la clase map (map <mobil, ListaGastos> mapMobil) que has declarado en el constructor.

Declara instancia de la clase map en la sección "private" de tu clase.
  #3 (permalink)  
Antiguo 02/01/2006, 11:23
 
Fecha de Ingreso: enero-2006
Mensajes: 2
Antigüedad: 18 años, 4 meses
Puntos: 0
Hola. Gracias por atender mi mensaje. mi classe MapMobil es la siguiente:

#include <cstring> // strcpy()
#include <iostream> // cin, cout, flush, endl,...
#include <map>
#include <list>
#include "mobil.h"
#include "MapMobil.h"
#include "ListaGastos.h"

using namespace std;
//-------------------------------------------------------------------------
//CONSTRUCTOR DEL MAP
//-------------------------------------------------------------------------
MapMobil::MapMobil()
{
map <mobil, LlistaDeDespeses> MapMobil;
}

//-------------------------------------------------------------------------
//METODO AñadirMobil:
//-------------------------------------------------------------------------
void MapMobil::AñadirMobil(const mobil &m)
{
LlistaDeDespeses Ld;

pair<mobil, LlistaDeDespeses> a;
a.first = m;
a.second = Ld;
MapMobil.insert(a);


}

Como declaro la classe map como me dices tu?

Gracias por todo
  #4 (permalink)  
Antiguo 02/01/2006, 11:30
Usuario baneado!
 
Fecha de Ingreso: febrero-2005
Mensajes: 116
Antigüedad: 19 años, 2 meses
Puntos: 0
Si no sabes C++ no andes jugando con la STL ;)

Échale un buen repaso a las clases en C++.

Te repito: No debes declarar el map en el constructor... Si no como miembro de la clase.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:10.