【发布时间】:2016-04-04 17:59:40
【问题描述】:
您好,我创建了两个具有不同实现的字典(红黑树和哈希表) 我只需要在我的字典中创建一个名为 istanza_vocabolario 的对象。
在main 内部我使用例如istanza_vocabolario->Cancella(parola_new)
根据我的选择,istanza_vocabolario 必须是 VocabolarioRB* 类型或 Vocabolario* 。
我无法创建函数,因为我不知道是否必须返回 Vocabolario 指针或 VocabolarioRB 指针。如果我将对象声明到 IF 中,则会发生范围错误。
我能怎么做?
抱歉英语不好,谢谢!
#include "abstract_Vocabolario.h"
#include "abstract_Vocabolario.cpp"
#include "VocabolarioRB.h"
#include "Vocabolario.h"
#include "Vocabolario.cpp"
using namespace std;
char Menu();
int main()
{
VocabolarioRB* istanza_vocabolario = new VocabolarioRB;
int scelta_vocabolario;
cout<<"Quale vocabolario vuoi utilizzare (1 per RedBlack o 2 per HashTable) ?"<<endl;
cin>>scelta_vocabolario;
if (scelta_vocabolario == 2 )
{
delete istanza_vocabolario;
Vocabolario* istanza_vocabolario = new Vocabolario;
}
while(true)
{
char scelta=Menu();
switch(scelta)
{
case '1':
{
cout<<" 1)Inserimento parola"<<endl;
string parola_new;
cout<<endl<<" Inserisci parola da immettere nel vocabolario:\n ";
cin>>parola_new;
if (istanza_vocabolario->Inserisci(parola_new) != 0 )
cout << "Inserito con successo" << endl;
else
cout << "Inserimento non avvenuto" << endl;
}
break;
case '2':
{
cout<<" 3)Ricerca parola"<<endl;
string parola_ricercata;
cout<<endl<<" Inserisci parola da RICERCARE nel vocabolario:\n ";
cin>>parola_ricercata;
istanza_vocabolario->Ricerca(parola_ricercata);
}
break;
//case '3':
//istanza_vocabolario->Visita_Albero(); //MOMENTANEAMENTE VALE SOLO PER IL DIZIONARIO 2
//break;
case '4':
{
cout<<" 4)Eliminazione parola"<<endl;
string parola_new;
cout<<endl<<" Inserisci parola da eliminare nel vocabolario: ";
cin>>parola_new;
if (istanza_vocabolario->Cancella(parola_new) != 0)
cout<< "Eliminato con successo" << endl;
else
cout <<"Eliminazione NON avvenuta" << endl;
}
break;
case 'E':
delete istanza_vocabolario;
return 0;
default:
cout<<" ATTENZIONE";
cout<<" valore inserito non valido."<<endl;
}
}
return 0;
}
char Menu()
{
cout<<endl<<endl<<" Menu Vocabolario"<<endl<<endl;;
cout<<" Scegli l'operazione da compiere:"<<endl<<endl;
cout<<" 1";
cout<<" - Inserisci nuova parola;"<<endl;
cout<<" 2";
cout<<" - Ricerca parola;"<<endl;
cout<<" 3";
cout<<" - Visualizza albero;"<<endl;
cout<<" 4";
cout<<" - Elimina parola;"<<endl;
cout<<" E";
cout<<" - Esci dal programma."<<endl<<" ";;
cout<<endl<<" Digita il numero dell'operazione: ";
char valore;
cin>>valore;
cout<<endl;
return valore;
}
【问题讨论】: