Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá Galera, tudo bem?
Estou precisando de ajuda pra compilar um programa,
teoricamente está certo, pois testei inúmeras vezes e nao consigo encontrar problema algum!
Eu implementei uma Lista Simples em C++ usando classe...
Quando vou compilar aparece o seguinte erro:
>
D:\Documents\Projetos\C-C++\ED\ED - Lista Simples\main.cpp||In member function `int Lista<tipo>::remove(tipo) [with tipo = int]':|
D:\Documents\Projetos\C-C++\ED\ED - Lista Simples\main.cpp|124|instantiated from here|
D:\Documents\Projetos\C-C++\ED\ED - Lista Simples\main.cpp|75|error: 'class No<int>' has no member named 'elem'|
D:\Documents\Projetos\C-C++\ED\ED - Lista Simples\main.cpp|80|error: 'class No<int>' has no member named 'elem'|
||=== Build finished: 2 errors, 0 warnings ===|
Meu código é esse:
#include <iostream>
using namespace std;
template <class tipo>
class No{
public:
tipo info;
No <tipo> *prox;
No(tipo elem, No <tipo> *p);
};
template <class tipo>
class Lista{
private:
No <tipo> *inicio;
public:
Lista();
~Lista();
void insert(tipo elem);
int remove(tipo elem);
int empty();
};
template <class tipo>
No <tipo> :: No(tipo elem, No <tipo> *p){
info=elem;
prox=p;
}
template <class tipo>
Lista <tipo> :: Lista() {inicio=NULL;}
template <class tipo>
int Lista <tipo> :: empty(){
if(!inicio)
return 1;
else
return 0;
};
template <class tipo>
void Lista <tipo> :: insert(tipo elem){
No <tipo> *ant=NULL, *atual,*novo;
novo = new No <tipo>(elem, NULL);
if(empty())
inicio=novo;
else{
atual=inicio;
while(atual!=NULL && atual->info <= elem){
ant=atual;
atual=atual->prox;
}
if(ant==NULL){//inicio
novo->prox=inicio;
inicio=novo;
}
else{//meio ou fim
ant->prox=novo;
novo->prox=atual;
}
}
}
template <class tipo>
int Lista <tipo> :: remove(tipo elem){
No <tipo> *ant=NULL,*atual;
if(empty())
return -1;
else{
atual = inicio;
while( atual && (atual->elem < elem)){
ant=atual;
atual=atual->prox;
}
if(atual!=NULL && atual->elem == elem){
if(ant==NULL)//inicio
inicio=atual->prox;
else//meio ou fim
ant->prox=atual->prox;
delete atual;
return 0;
}
else
return 1; //nao existe
}
}//FIM
template <class tipo>
Lista <tipo> :: ~Lista(){
No <tipo> *p;
while(inicio!=NULL){
p=inicio;
inicio=inicio->prox;
delete p;
}
}
int main()
{
char opcao = 'a';
int num, retorno;
Lista <int> L;
cout << "Informe opcao [I]nserir [R]emover [S]air:";
cin >> opcao;
while(opcao != 's'){
cout << "Digite numero: ";
cin >> num;
switch (opcao){
case 'i':
L.insert(num);
break;
case 'r':
retorno = L.remove(num);
if(retorno == -1)
cout << "Lista Vazia" << endl;
else{
if(retorno == 0)
cout << "Remocao Realizada." << endl;
else
cout << "Numero Nao Existe." << endl;
break;
}
default:
cout << "Opcao Inexistente" << endl;
break;
}
cout << "Informe Opcao..." << endl;
cin >> opcao;
}
L.~Lista();
return 0;
}
Vocês podem me ajudar?
Abraço :D
Carregando comentários...