/Anonimizzato16831Utente anonimizzato15 apr 2015, 20:05Ciao ragazzi non riesco a capire l'errore che mi da quando cerco di testare il programma. L'albero Red Black è fatto bene, solamente la parte dove devo cancellare un elemento mi da un errore. Precisamente mi dice: Base operand of '->' has non-pointer type 'std::string... void Albero::cancella(Nodo*x) { Nodo *w=new Nodo(); Nodo *y=new Nodo(); while((x!=radice) && (x->color=="black")) { if(x=x->Figlio_Sinistro) { w=x->Figlio_Destro; if(w->color=="red") { x->Genitore->color="red"; w->color="black"; Rotazione_a_Sinistra(x->Genitore); w=x->Figlio_Destro; } else{ if((w->Figlio_Sinistro->color=="black") && (w->Figlio_Destro->color=="black")) { w->color="red"; x=x->Genitore; } else{ if(w->color->Figlio_Destro=="black") [ QUI MI DA L'ERRORE!!!!!!!!] { w->Figlio_Sinistro->color=="black"; w->color="red"; Rotazione_a_Destra(w); w=x->Figlio_Destro; w->color=x->Genitore->color; w->Genitore->color="black"; w->Figlio_Destro->color="black"; Rotazione_a_Sinistra(x->Genitore); } } } } } }
/Anonimizzato15008Utente anonimizzato15 apr 2015, 20:19L'errore mi sembra abbastanza autoesplicativo.. w->color è una stringa, dunque w->color->Figlio_Destro non ha senso. Attenzione nel primo if, ci vanno due uguali non uno. P.s.: Quando inserisci codice nel forum, utilizza gli appositi tag
/Anonimizzato16831Utente anonimizzato15 apr 2015, 20:27OK perfetto ma non so come aggiustare , visto che ho seguito lo pseudocodice che ha dato il prof sulle slide :\
/Anonimizzato16831Utente anonimizzato15 apr 2015, 21:47Ah ecco avevo gia corretto in questo modo ma mi dava lo stesso errore , forse perchè non avevo salvato . Grazie mille gentilissimo !