Salve a tutti. Anticipamente chiedo il perdono dal mio italiano a causa che non sono italofono.
Cercero di spiegarmi.
Ho due classi: "Prodotto" e "Supermercato", ho vari firme delle funzioni e implementazioni - qui ok.
Il problema e' il seguente. Quanto sono nel "main.cpp" e eseguo' il seguente codice:
codice:
cout<<"Inserisci codice prodotto: "; cin>>codiceProdotto; cout<<"Inserisci descrizione prodotto: "; cin>>descrizioneProdotto;
cout<<"Inserisci prezzo unitario del prodotto: "; cin>>prezzoUnitarioProdotto;
cout<<"Inserisci quantita presente in negozio: "; cin>>quantitaNegozioProdotto;
cout<<"Inserisci quantita presente in magazzino: "; cin>>quantitaMagazzinoProdotto;
Prodotto *prodottoNuovo = new Prodotto(codiceProdotto,descrizioneProdotto,prezzoUnitarioProdotto,quantitaNegozioProdotto,quantitaMagazzinoProdotto);
prodottoPresenteNegozioMagazzino->aggiungiProdotto((*prodottoNuovo));
ma prima giustamente istanzio un oggetto :
codice:
Supermercato *prodottoPresenteNegozioMagazzino = new Supermercato();
E mi si pianta il programma. Uso IDE Code::Blocks che comunque compila il smart-complition vede tutte le firme ok.
Esporto a voi il codice della "Prodotto.h" , "Prodotto.cpp", "Supermercato.h" e "Supermercato.cpp"
codice:
#ifndef PRODOTTO_H_INCLUDED#define PRODOTTO_H_INCLUDED
#include <string>
using namespace std;
class Prodotto {
private:
int codice;
string descrizione;
float prezzoUnit;
int quantitaNegozio;
int quantitaMagazzino;
public:
int getCodice();
void setCodice(int codice);
string getDescrizione();
void setDescrizione(string descrizione);
float getPrezzoUnit();
void setPrezzoUnit(float prezzoUnit);
int getQuantitaNegozio();
void setQuantitaNegozio(int quantitaNegozio);
int getQuantitaMagazzino();
void setQuantitaMagazzino(int quantitaMagazzino);
Prodotto(void);//Costruttore standard
Prodotto(int in_codice, string in_descrizione, float in_prezzoUnit, int in_quantitaNegozio, int in_quantitaMagazzino);//Costruisco un oggetto
Prodotto(const Prodotto &prodotto); //Costruttore di copia
};
#endif // PRODOTTO_H_INCLUDED
codice:
#include "Prodotto.h"
int Prodotto::getCodice() {
return this->codice;
}
void Prodotto::setCodice(int codice) {
this->codice = codice;
}
string Prodotto::getDescrizione() {
return this->descrizione;
}
void Prodotto::setDescrizione(string descrizione) {
this->descrizione = descrizione;
}
float Prodotto::getPrezzoUnit() {
return this->prezzoUnit;
}
void Prodotto::setPrezzoUnit(float prezzoUnit) {
this->prezzoUnit = prezzoUnit;
}
int Prodotto::getQuantitaNegozio() {
return this->quantitaNegozio;
}
void Prodotto::setQuantitaNegozio(int quantitaNegozio) {
this->quantitaNegozio = quantitaNegozio;
}
int Prodotto::getQuantitaMagazzino() {
return this->quantitaMagazzino;
}
void Prodotto::setQuantitaMagazzino(int quantitaMagazzino) {
this->quantitaMagazzino = quantitaMagazzino;
}
Prodotto::Prodotto(void)
{
codice = 0;
descrizione = "";
prezzoUnit = 0.0;
quantitaNegozio = 0;
quantitaMagazzino = 0;
}
Prodotto::Prodotto(int in_codice, string in_descrizione, float in_prezzoUnit, int in_quantitaNegozio, int in_quantitaMagazzino) {
this->codice = in_codice;
this->descrizione = in_descrizione;
this->prezzoUnit = in_prezzoUnit;
this->quantitaNegozio = in_quantitaNegozio;
this->quantitaMagazzino = in_quantitaMagazzino;
}
Prodotto::Prodotto(const Prodotto &prodotto)
{
this->codice = prodotto.codice;
this->descrizione = prodotto.descrizione;
this->prezzoUnit = prodotto.prezzoUnit;
this->quantitaNegozio = prodotto.quantitaNegozio;
this->quantitaMagazzino = prodotto.quantitaMagazzino;
}
codice:
#ifndef SUPERMERCATO_H_INCLUDED
#define SUPERMERCATO_H_INCLUDED
#include <iostream>
#include "Prodotto.h"
class Supermercato {
private:
Prodotto* prodotto;
int fornimentoMagazzino;
int trasferimentoNegozio;
int ricercaProdotto;
int vendiProdotti;
int quantita = 0, quanMax = 1000;
public:
Supermercato(void)
{
prodotto = new Prodotto[quanMax];
}
~Supermercato()
{
delete[] prodotto;
}
void aggiungiProdotto(const Prodotto in_prodotto);
int fornisciQuantitaMagazzino(int in_fornimentoMagazzino);
int vendiProdotto(int in_vendiProdotti);
void trasferisciProdottoDaMagazANegoz(int in_trasferimentoNegozio, Prodotto in_prodotto);
string RicercaProdotti(int codice);
int getQuantita();
};
#endif // SUPERMERCATO_H_INCLUDED
codice:
#include "Supermercato.h"
#include <ciso646> /** una libreria che converte gli operatori logici es. || in parola chiave "or"*/
#define quantitaMax 1000
void Supermercato::aggiungiProdotto(Prodotto in_prodotto)
{
prodotto[quanMax] = in_prodotto;
quantita++;
}
int Supermercato::getQuantita()
{
return quantita;
}
int Supermercato::fornisciQuantitaMagazzino(int in_fornimentoMagazzino) {
/**for (int i = 0; i < quantita; i++)
{
if (prodotto[i].getQuantitaMagazzino() == 0 or prodotto[i].getQuantitaMagazzino() >= 0)
+=in_fornimentoMagazzino;
}*/
}
int Supermercato::vendiProdotto(int in_vendiProdotti) {
float prezzoTot;
for (int i = 0; i < quantita; i++)
{
if (prodotto[i].getQuantitaNegozio() > 0)
prezzoTot = prodotto->getPrezzoUnit()*(float)in_vendiProdotti;
}
return prezzoTot;
}
void Supermercato::trasferisciProdottoDaMagazANegoz(int in_trasferimentoNegozio, Prodotto in_prodotto) {
// TODO - implement Supermercato::trasferisciProdottoDaMagazANegoz
throw "Not yet implemented";
}
string Supermercato::RicercaProdotti(int codice) {
for (int i = 0; i < quantita; i++)
{
if(prodotto[i].getCodice() == codice)
{
cout<<"Codice e' presente: "<<endl;
}
cout<<"Codice e' errato o non presente";
}
return 0;
}
Poi dovrei implementare le altri funzioni che non sono ancora state implementate. Perche' non saprei come farle. Mi sono abilitato a programmare in Java che li funziona la cosa un po diversamente. Prego aiutatemi...
In attesa di una Vostra rispota, le porgo distinti saluti.