저는 2006 년에 학부생으로 쓴 몇 가지 코드를 검토 할 것입니다. 템플릿을 사용하여 C++로 작성된 간단한 유전자 알고리즘 라이브러리입니다. 그것은 시각 스튜디오와 함께 코딩 때 2006 년에 일하는 데 사용하지만, 지금은 xcode에서 그것을 실행하려고하면 컴파일 오류가 발생합니다.C++ 템플릿 반복자 오류
이 기능은 나에게주고 오류 :
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;
}
엑스 코드는이 두 라인은 가지고 있지 뿌려; it_t1과 it_t2 전에.
vector<T>::iterator it_t1;
vector<T>::iterator it_t2;
벡터 유형은 T입니까?
template <typename T>
class TSPGenome : public Genome
{
어떤 도움을 주시면 감사하겠습니다 다음과 같이
나는 클래스에 선언했다.감사합니다.
다음은이 FAQ 항목의 속임수입니다. [종속 이름에 "템플릿"및 "typename"을두기위한 위치] (http://stackoverflow.com/questions/610245/where-to-put-the-template 종속 이름 기반 종속 이름) – sbi
아니요. 질문은 다릅니다 - 대답은 같습니다. 질문에 대한 답을 이미 모르는 사람은 FAQ 항목의 관련성을 추측하지 못합니다. FAQ에 링크하는 것은 좋지만이 질문은 "중복"이라고 주장하는 것은 터무니 없습니다. – jalf
문제와 관련이 없지만 다음과 같이하면 안됩니다 : return (t1.genome_vec-> size() == t2.genome_vec-> size()) && std :: equal (t1.genome_vec-> begin() , t1.genome_vec-> end(), t2.genome_vec-> begin()); –