Je passe en revue un code que j'ai écrit en 2006 en tant qu'étudiant de premier cycle. C'est une bibliothèque d'algorithme génétique simple écrite en C++ en utilisant des templates. Il a l'habitude de travailler en 2006 quand je l'ai codé avec le studio visuel, mais maintenant quand j'essaye de l'exécuter dans xcode je compile des erreurs.C++ Template Erreur Iterator
Cette fonction me donne des erreurs:
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 plaint de ces deux lignes ne pas avoir; avant it_t1 et it_t2.
vector<T>::iterator it_t1;
vector<T>::iterator it_t2;
Est-ce parce que le vecteur le t-il?
je l'ai déclaré dans la classe comme suit:
template <typename T>
class TSPGenome : public Genome
{
Toute aide serait appréciée.
Merci!
Ceci est une dupe de cette entrée de la FAQ: [Où mettre le "template" et "typename" sur les noms dépendants] (http://stackoverflow.com/questions/610245/where-to-put-the-template -and-typename-on-dependent-names) – sbi
Non, ce n'est pas le cas. Les questions sont différentes - la réponse est la même. Quelqu'un qui ne connaît pas déjà la réponse à la question ne devinera pas la pertinence de cette entrée FAQ. Lien vers la FAQ est super, mais prétendre que cette question est un "doublon" est ridicule. – jalf
Pas lié à votre problème, mais ne pourriez-vous pas faire: return (t1.genome_vec-> size() == t2.genome_vec-> taille()) && std :: equal (t1.genome_vec-> begin() , t1.genome_vec-> end(), t2.genome_vec-> begin()); –