Devo gestire un array di "risorse". Ciascuna risorsa consiste in una stringa di caratteri e un variabile che indica se quest'ultima è libera o occupata.
Questo è il codice:
L'errore è scaturito dalla funzione aggiungi(). Qualcuno sa aiutarmi?codice:#include <iostream> using namespace std; enum stato{libera, occupata}; struct risorsa{ char* str; stato st; }; class Sistema{ risorsa* ri; int lung, disp; friend ostream& operator<<(ostream&, const Sistema&); public: Sistema(int); ~Sistema(); bool aggiungi(const char*); bool occupa(const char*); bool contiene(const char*); bool elimina(const char*); }; ostream& operator<<(ostream& os, const Sistema& si){ os << "Capacita' del sistema: " << si.lung << endl << "Risorse presenti nel sistema: " << si.disp << endl; if(si.disp>0){ os << "Elenco risorse libere: "; for(int i=0; i<si.disp; i++){ if(si.ri[i].st==libera) os << si.ri[i].str << " "; } os << "\nElenco risorse occupata: "; for(int i=0; i<si.disp; i++){ if(si.ri[i].st==occupata) os << si.ri[i].str << " "; } os << endl; } return os; } Sistema::Sistema(int i){ lung=i; disp=0; ri=new risorsa[lung]; } Sistema::~Sistema(){ delete[] ri; } bool Sistema::aggiungi(const char* str){ for(int i=0; i<lung; i++){ if(ri[i].str==str) return false; } if(lung==disp) return false; strcpy( ri[disp].str, str); ri[disp].st=libera; disp++; return true; } int main(){ Sistema si(5); cout << si; si.aggiungi("R1"); si.aggiungi("R2"); si.aggiungi("R3"); cout << si; return 0; }

Rispondi quotando