C++ Allocazione con new "non funzionante"

di il
1 risposte

C++ Allocazione con new "non funzionante"

Salve e buon anno a tutti,
sto facendo un progetto con C++ e devo implementare due dizionari: uno con Red Black e un altro con Hash Table; il tutto tramite classi astratte.
Riassumendo un po' le classi ho fatto una classe astratta (quindi non istanziabile) che contiene le "cose in comune" dei due dizionari e poi gli altri due che derivano da questa classe astratta (quindi ho implementato i metodi che avevo dichiarato virtual) più la propria implementazione (abbastanza complicata).
Il mio problema è che devo arrivare al menù di scelta che devo avere una istanza di tipo puntatore a VOCABOLARIOHT oppure una istanza di tipo puntatore a VOCABOLARIORB. Questo perchè le funzioni nel menù sono scritte in questo modo: istanza_vocabolario->Inserisci(word) oppure istanza_vocabolario->Ricerca(word).
Comunque in un progetto che ho visto si adoperava in questo modo:

VocabolarioRB * istanza_vocabolario = new VocabolarioRB;
 if(scelta_vocabolario == 2) {
			delete istanza_vocabolario;
			VocabolarioHT * istanza_vocabolario = new VocabolarioHT;
E funziona!!
Nel mio progetto ho fatto una cosa simile ma non funziona l'allocazione nel new, mi dice che poi istanza_vocabolario non viene vista! Come se la new non funzionasse :s
Se riesco a farlo funzionare "sintatticamente" ha errori logici (per via di questa istanza) e crasha quando scelgo il vocabolario che ho istanziato nell'if.
Se faccio in questo modo:

 if(scelta_vocabolario == 1) {
			VocabolarioHT * istanza_vocabolario = new VocabolarioHT;
else
                       VocabolarioRB * istanza_vocabolario = new VocabolarioRB;

c'è un errore di scope.

Ho fatto anche un algoritmo "bruto" che se la scelta era il primo dizionario allora istanziavo quel dizionario e facevo TUTTO il codice mentre se sceglievo l'altor ho ripetuto tutte il codice (giusto per avere la conferma che l'errore fosse nell'istanza) e mi funzionano entrambi.
Cosa potrebbe essere? Provo a cambiare compilatore?

EDIT: lavoro con CodeBlocks

1 Risposte

  • Re: C++ Allocazione con new "non funzionante"

    Dalla tua descrizione non si capisce il problema. Ti consiglio di postare il codice e specificare esattamente l'errore che ti viene segnalato.
    Se il codice è particolarmente lungo cerca di eliminare le parti non inerenti al problema in questione, cerca di fornire il minimo indispensabile per riprodurre il problema.
Devi accedere o registrarti per scrivere nel forum
1 risposte