Ich gehe über einige Code, den ich im Jahr 2006 als undergrad schrieb. Es ist eine einfache genetische Algorithmus-Bibliothek, die in C++ mit Hilfe von Templates geschrieben wurde. Es verwendet, um im Jahr 2006 zu arbeiten, wenn ich es mit Visual Studio codiert, aber jetzt, wenn ich versuche, es in xcode ausführen, bekomme ich Kompilierungsfehler.C++ Vorlage Iterator Fehler
Diese Funktion gibt mir Fehler:
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 beschwert sich über diese beiden Linien, die nicht; vor it_t1 und it_t2.
vector<T>::iterator it_t1;
vector<T>::iterator it_t2;
Ist es, weil der Vektortyp es T?
Ich erklärte es in der Klasse wie folgt:
template <typename T>
class TSPGenome : public Genome
{
Jede Hilfe würde geschätzt.
Danke!
ist ein Betrogene dieser FAQ-Eintrag: [Wo setzen Sie die „Vorlage“ und „Typname“ auf abhängigen Namen] (http://stackoverflow.com/questions/610245/where-to-put-the-template -und-typname-auf-abhängige-name) – sbi
Nein ist es nicht. Die Fragen sind anders - die Antwort ist die gleiche. Jemand, der die Antwort auf die Frage nicht bereits kennt, wird die Relevanz dieses FAQ-Eintrags nicht erraten. Die Verlinkung zu den FAQ ist großartig, aber die Behauptung, dass diese Frage ein "Duplikat" ist, ist lächerlich. – jalf
nicht im Zusammenhang mit Ihrem Problem, konnte aber nicht einfach tun: return (t1.genome_vec-> size() == t2.genome_vec-> size()) && std :: gleich (t1.genome_vec-> begin() , t1.genome_vec-> end(), t2.genome_vec-> begin()); –