Ciao a tutti!
ho un "piccolo" problema da risolvere per far funzionare il mio programma in c++ correttamente.
io voglio gestire un ristorante con un programma in c++ in maniera che io possa prenotare un tavolo, visualizzare la lista dei prodotti venduti in questo ristorante, gestire le ordinazioni ecc...
nel mio programma ho 2 classi: Sala e tavolo, dove la sala non è altro che un contenitore di tavoli; Tavolo invece è una classe che riguarda un singolo tavolo:
vi faccio vedere:
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <sstream>
#include <map>
using namespace std;
class Prodotto{
public:
int id;
string descrizione;
float prezzo;
void listino();//stampo id descrizione e prezzo
};
class Tavolo{
public:
int numero;
int posti;
int persone;
int conto;
map<int,int> ordinazioni;
protected:
bool prenotato;
Tavolo(){
prenotato=false;
conto=0;
persone=0;
}
void prenota();
void visualizza();
void ordina();
};
class Sala{
public:
map<int,Prodotto*> prodotti;
vector<Tavolo*> tavoli;
void loadfile();//carico tavoli
void loadmagazzino();//carico lista prodotti
void elenca();//visualizzo stato tavoli
void prenotatav();//prenoto un tavolo
void ordinatav();//seleziono il tavolo dove si sta per ordinare una lista di prodotti
void visualizzaMagazzino();//stampo il contenuto della classe prodotto
};
il mio problema è il seguente: in Sala::loadmagazzino() io carico una lista di prodotti recuperato da un file.txt e vengolo salvati in
map<int,Prodotto*> prodotti
e successivamente salvati nella classe Prodotto. L'idea è di avere una mappa orizzontale rispetto alle classi.
Fin qui nessun problema.
Se voglio ordinare una lista di prodotti, io chiamo la funzione Sala::prenotatav() e mi spedisce al tavolo selezionato, chiamando la funzione Tavolo::ordina(); a questo punto il programma mi chiede codice del prodotto da ordinare e quantità e salvo tutto in un'altra mappa, ovvero
map<int,int>ordinazioni
.
La difficoltà che non riesco a superare è quella di confrontare la map Prodotti contenuta in Sala con la map ordinazioni di un tavolo specifico in maniera da:
-verificare che i codici dei prodotti ordinati siano realmente presenti nella mappa globale salvata nella classe Sala;
-estrarre il prezzo unitario di ciascun prodotto in modo da calcolare il prezzo totale.
mi era stato suggerito di passare un puntatore alla mappa globale, ovvero map<int, Prodotto*> prodotti ai tavoli in modo che ogni tavolo condivide con la sala un puntatore alla mappa. Solo che ho difficolta ad implementare questa cosa: qualcuno riesce a suggerirmi qualcosa??
grazie e spero di esser stato sufficientemente chiaro