Il nuovo costruttore l'ho scritto dove c'era il vecchio , ho solo inserito i parametri nella parentesi.
adesso ti posto tutto il codice, in ogni caso vorrei continuare a mantenere la struct anche se effettivamente non mi serve in questo caso.
oggetto.h
#ifndef OGGETTO_H_
#define OGGETTO_H_
#include <string>
#include <iostream>
using namespace std;
class oggetto {
friend ostream & operator <<(ostream &,const oggetto&);
friend istream & operator >>(istream&, oggetto&);
public:
oggetto(int,const string&, int ,int,const string &);
private:
int id;
string nome;
int quantita;
int costo;
string note;
};
typedef struct{
oggetto obj(int,const string&, int ,int,const string &);
int identificatore;
}record;
#endif /* OGGETTO_H_ */
oggetto.cpp
/*
* oggetto.cpp
*
* Created on: 14/feb/2013
* Author: gennaro
*/
#include "oggetto.h"
#include <string>
#include <iostream>
using namespace std;
oggetto::oggetto(int i,const string& s, int q ,int p,const string & n){
id=i;
nome=s;
quantita=q;
costo=p;
note=n;
}
ostream & operator <<(ostream& out,const oggetto& obj){
out<<obj.id<<" "<<obj.nome<<" "<<obj.quantita<<" "<<obj.costo<<" "<<obj.note<<endl;
return out;
}
istream & operator >>(istream & in, oggetto& obj){
in>>obj.id;
in>>obj.nome;
in>>obj.quantita;
in>>obj.costo;
in>>obj.note;
return in;
}
main
#include <iostream>
#include <fstream>
#include "oggetto.h"
using namespace std;
int main() {
bool esci=1;
while(esci){
cout<<"\n\nMenu gestionale ferramenta"<<endl;
int scelta;
cout<<"Seleziona l'opzione desiderata:"<<endl;
cout<<"1)Inserisci nuovo oggetto nell'inventario"<<endl;
cout<<"2)Stampa l'inventario"<<endl;
cout<<"3)Cerca un oggetto (eventualmente modificalo)"<<endl;
cout<<"4)Esci"<<endl;
cin>> scelta;
switch(scelta){
case 1:{
ofstream myFile("miofile.txt", ios::app);
oggetto obj1(2,"Martello2",7,4,"null");
myFile<<obj1;
cout<<"\nL'oggetto è stato copiato nel file"<<endl;
}
break;
case 2:{
record inventario[100];
int idTmp;
string nomeTmp;
int quantitaTmp;
int costoTmp;
string noteTmp;
cout<<"\nStampa inventario:\n";
ifstream myFile2("miofile.txt", ios::in);
int i=0;
while(!myFile2.eof()){
myFile2 >> idTmp;
myFile2 >> nomeTmp;
myFile2 >> quantitaTmp;
myFile2 >> costoTmp;
myFile2 >> noteTmp;
// inventario[i].obj(idTmp,nomeTmp,quantitaTmp,costoTmp,noteTmp);
inventario[i].identificatore=idTmp;
cout<<inventario[i].identificatore<<endl;
i++;
}
cout << "Caricamento dell'inventario completato\n\n";
for( int k=0;k<i;k++)
cout<<inventario[k].identificatore<<endl;
// oggetto obj2;
// myFile2>>obj2;
// cout<<obj2<<endl;
}
break;
case 3:{
cout<<"\nCerca oggetto";
}
break;
case 4:{
esci=0;
cout<<"\nProgramma terminato";
}
break;
default: {cout<<"\nScelta non valida";
}
break;
}
}
return 0;
}
se nel main elimini gli slash di commento alla riga
// inventario
.obj(idTmp,nomeTmp,quantitaTmp,costoTmp,noteTmp); hai l'errore