Sto esaminando del codice che ho scritto nel 2006 come undergrad. È una semplice libreria di algoritmi genetici scritta in C++ usando i modelli. Funzionava nel 2006 quando l'ho codificato con Visual Studio, ma ora quando cerco di eseguirlo in xcode ottengo degli errori di compilazione.Modello C++ Errore Iterator
Questa funzione mi sta dando errori:
friend bool operator==(const TSPGenome<T> & t1, const TSPGenome<T> & t2)
{
// loop through each interator and check to see if the two genomes have the same values
if(t1.genome_vec->size() != t2.genome_vec->size())
return false;
else
{
// iterate through each
vector<T>::iterator it_t1;
vector<T>::iterator it_t2;
it_t1 = t1.genome_vec->begin();
for(it_t2 = t2.genome_vec->begin();
it_t2 != t2.genome_vec->end();
++it_t2, ++it_t1)
{
if(*it_t2 != *it_t1)
return false;
}
}
// everything seems good
return true;
}
Xcode lamenta queste due linee non avere; prima di it_t1 e it_t2.
vector<T>::iterator it_t1;
vector<T>::iterator it_t2;
È perché il tipo di vettore è T?
ho dichiarato nella classe come segue:
template <typename T>
class TSPGenome : public Genome
{
Qualsiasi aiuto sarebbe apprezzato.
Grazie!
Questo è un duplicato di questa voce di domande frequenti: [Dove inserire il "modello" e "nome tipo" sui nomi dipendenti] (http://stackoverflow.com/questions/610245/where-to-put-the-template -e-typename-on-dependent-names) – sbi
No, non lo è. Le domande sono diverse - la risposta è la stessa. Qualcuno che non conosce già la risposta alla domanda non indovina la rilevanza di questa voce delle FAQ. Il collegamento alle domande frequenti è fantastico, ma affermare che questa domanda è un "duplicato" è ridicolo. – jalf
Non correlato al tuo problema, ma non potresti semplicemente farlo: return (t1.genome_vec-> size() == t2.genome_vec-> size()) && std :: equal (t1.genome_vec-> begin() , t1.genome_vec-> end(), t2.genome_vec-> begin()); –