Salve, non riesco a compilare, dovrei realizzare una lista di candidati, ma da problemi di " no matching function for call to 'candidato::candidato() potete aiutarmi?
#include<iostream>
#include<string>
#include<cstdlib>
#include<ctime>
using namespace std;
class candidato
{
private:
int v, r, e;
string codicefiscale;
public:
candidato(int _v,int _r, int _e, string cod)
{
v=_v;
r=_r;
e=_e;
codicefiscale=cod;
}
setV(int V)
{
v=v;
}
setr(int R)
{
r=R;
}
setE(int E)
{
e=E;
}
setString(string str)
{
codicefiscale=str;
}
bool operator >(const candidato& cand)
{
if(v>cand.v)
return true;
else if(v==cand.v && r>cand.r)
return true;
else if(v==cand.v && r==cand.r && cand.e>e)
return true;
else
return false;
}
bool operator <(const candidato& cand)
{
if(v<cand.v)
return true;
else if(v==cand.v && r<cand.r)
return true;
else if(v==cand.v && r==cand.r && cand.e<e)
return true;
else
return false;
}
bool operator >=(const candidato& cand)
{
if(v>=cand.v)
return true;
else if(v==cand.v && r>=cand.r)
return true;
else if(v==cand.v && r==cand.r && cand.e>=e)
return true;
else
return false;
}
bool operator <=(const candidato& cand)
{
if(v<=cand.v)
return true;
else if(v==cand.v && r<=cand.r)
return true;
else if(v==cand.v && r==cand.r && cand.e<=e)
return true;
else
return false;
}
bool operator ==(const candidato& cand)
{
if(v==cand.v && r==cand.r && cand.e==e)
return true;
else
return false;
}
bool operator !=(const candidato& cand)
{
if(v!=cand.v && r!=cand.r && cand.e!=e)
return true;
else
return false;
}
};
template<class T>
class nodo
{
public:
T info;
nodo<T>* succ;
void setsucc(nodo<T>* x)
{
succ=x;
}
};
template<class T>
class lista
{
private:
nodo<T>* testa;
public:
lista()
{
testa=NULL;
}
nodo<T>* get_testa()
{
return testa;
}
set_testa(nodo<T>* x)
{
testa=x;
}
inserisci(T x)
{
nodo<T>* temp=testa;
nodo<T>* nuovo= new nodo<T>;
nuovo->info=x;
nuovo->succ=NULL;
if(testa==NULL)
testa=nuovo;
else
{
if(temp->info>x)
{
nuovo->succ=testa;
testa=nuovo;
}
else
{
while(temp->succ!=NULL && temp->succ->info<x)
{
temp=temp->succ;
}
if(temp->succ==NULL)
{
temp->succ=nuovo;
}
else
{
nuovo->succ=temp->succ;
temp->succ=nuovo;
}
}
}
}
nodo<T>* ricerca(T x)
{
if(testa==NULL)
{
return 0;
}
else if(testa!=0 && testa->info==x)
return testa;
else
{
nodo<T>* temp=testa;
temp=temp->succ;
while(temp!=0)
{
if(temp->info==x)
return temp;
temp=temp->succ;
}
}
}
void cancella(T x)
{
if(testa==0)
{
}
nodo<T>* temp=testa;
if(testa->info==x)
{
testa=testa->succ;
delete temp;
}
else
{
nodo<T>* clone=testa;
clone=clone->succ;
while(clone!=0)
{
if(clone->info==x)
{
temp->succ=clone->succ;
delete clone;
}
clone=clone->succ;
temp=temp->succ;
}
}
}
stampa()
{
nodo<T>* temp=testa;
while(temp!=0)
{
cout<<temp->info<<" "<<temp<<endl;
temp=temp->succ;
}
}
};
class graduatoria : public lista<candidato>
{
public:
graduatoria()
{
lista<candidato>();
}
};
int main()
{
/*
lista<int> Lista;
Lista.inserisci(10);
Lista.inserisci(3);
Lista.inserisci(1);
Lista.inserisci(5);
Lista.inserisci(4);
Lista.inserisci(9);
Lista.inserisci(6);
Lista.inserisci(2);
Lista.inserisci(3);
Lista.inserisci(8);
Lista.inserisci(7);
Lista.stampa();
nodo<int>* a=Lista.ricerca(4);
cout<<endl;
Lista.cancella(5);
Lista.stampa();
srand(time(0));
cout<<endl<<endl;*/
candidato *a = new candidato(21,34,70,"GTRSDF94S03C351J");
candidato *b = new candidato(63, 63, 24,"FGTSER95Y05H351T");
candidato *c = new candidato(89, 60, 25,"RYUASD93R12E353H");
graduatoria A;
A.inserisci(*a);
return 0;
}