hi Daved, and thanks...
this is what i've changed in my code:
sorry i didn't translate it...but if you don't understand i'll do it.
make order function:
Code:
void mercearia::criarEncomenda(encomendas *E)
{
string nome, idE, idP;
unsigned int quant=0, precoT=0, numP=0, preco;
char op='s';
cout<<"\nQual o nome do comprador: ";
getline(cin, nome);
cout<<"\nInsira um ID para a encomenda: ";
getline(cin, idE);
while(op!='n')
{
cout<<"\nInsira o ID do produto a encomendar: ";
getline(cin,idP);
fflush(stdin);
preco = verExProd(idP);
if(preco == -1)
{
cout<<"Produto nao existe!";
}
else
{
numP++;
cout<<"\nInsira a quantidade a encomendar: ";
cin>>quant;
//encomendas enc;
dadosProdEnc p(idP,quant);
preco *= quant;
*E += p; //operador do array de produtos da encomenda
precoT += preco; //operador por defeito
E->setIDEnc(idE);
E->setNome(nome);
E->setPreco(precoT);
E->setNum(numP);
E->setArrayProd(*E);
}
cout<<"Deseja adicionar outro produto a sua encomenda? (S/N)";
cin>>op;
fflush(stdin);
}
}
view order function:
Code:
void mercearia::consultaEncomenda()
{
string i;
cout<<"Qual o ID da encomenda que quer ver: ";
cin>>i;
encomendas procura(i);
set <encomendas>::const_iterator it;
it = Enco.find(procura);
if( it == Enco.end())
{
cout<<"Nao foi encontrado!\n";
exit(1);
}
else
{
cout<<"\nDETALHES \n";
cout<<"\tId: "<<it->getIDEnc()<<"\n";
cout<<"\tNome: "<<it->getNome()<<"\n";
cout<<"\n -- \n" << procura;
cout<<"\tPreco Total: "<<it->getPreco()<<"\n";
cout<<"\tNum de prod encomendados: "<<it->getNum()<<"\n";
system("pause");
}
}
other constructor's and operator's
Code:
mercearia& mercearia::operator += (const encomendas& e)
{
Enco.insert(e);
return *this;
}
void encomendas::setArrayProd(const encomendas &ob)
{
delete[] prod;
if (!ob.num){
prod = 0;
num = 0;
return;
}
prod = new dadosProdEnc[ob.num];
if (!prod){
prod = 0;
num = 0;
cout << "\nMemoria insuficiente";
return;
}
num = ob.num;
for ( unsigned int i = 0 ; i < num ; i++ )
prod[i] = ob.prod[i];
}
encomendas& encomendas::operator +=(const dadosProdEnc &ob)
{
dadosProdEnc * aux = new dadosProdEnc[num+1];
if (!aux)
{
cout << "\nMemoria insuficiente";
return *this;
}
for ( unsigned int i = 0 ; i < num ; i++ )
aux[i] = prod[i];
aux[num] = ob;
num++;
delete[] prod;
prod = aux;
return *this;
}
string encomendas::getAsString()const
{
ostringstream oss;
oss << "\nArray de " << num << " produtos \n";
for ( unsigned int i = 0 ; i < num ; i++ )
oss << prod[i].getAsString() << endl;
return oss.str();
}
string dadosProdEnc::getAsString()const
{
ostringstream oss;
oss << idP << " --------- " << quant ;
return oss.str();
}
ostream & operator<<(ostream & saida, const encomendas & ob)
{
saida << ob.getAsString();
return saida;
}
after i did these changes i stopped having errors, which is nice, but the problem now is that when i create a order it doesn't get saved :-S