Repaso un código que escribí en 2006 como estudiante. Es una biblioteca de algoritmos genéticos simple escrita en C++ utilizando plantillas. Solía funcionar en 2006 cuando lo codifiqué con Visual Studio, pero ahora, cuando intento ejecutarlo en xcode, obtengo errores de compilación.C++ Template Iterator error
Esta función me está dando errores:
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 se queja de estas dos líneas no tener; antes de it_t1 y it_t2.
vector<T>::iterator it_t1;
vector<T>::iterator it_t2;
¿Es porque el vector mecanografía T?
lo declaré en la clase de la siguiente manera:
template <typename T>
class TSPGenome : public Genome
{
Cualquier ayuda sería muy apreciada.
Gracias!
Este es un engaño de esta entrada de preguntas frecuentes: [Dónde colocar la "plantilla" y "nombre de tipo" en los nombres dependientes] (http://stackoverflow.com/questions/610245/where-to-put-the-template -and-typename-on-dependent-names) – sbi
No, no lo es. Las preguntas son diferentes, la respuesta es la misma. Alguien que no conoce la respuesta a la pregunta no adivinará la relevancia de esa entrada de Preguntas Frecuentes. Vincular a las preguntas frecuentes es genial, pero afirmar que esta pregunta es un "duplicado" es ridículo. – jalf
No está relacionado con su problema, pero no podría hacer lo siguiente: return (t1.genome_vec-> size() == t2.genome_vec-> size()) && std :: equal (t1.genome_vec-> begin() , t1.genome_vec-> end(), t2.genome_vec-> begin()); –