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:
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;
}
L'errore è scaturito dalla funzione aggiungi(). Qualcuno sa aiutarmi?