我正在使用某人不再使用的代碼,這是舊的CodeWarrior代碼。的XCode抱怨這一點:模板:我需要更好地學習這些內容嗎?爲什麼我會收到錯誤
template <class listClass,class itemClass>
void FxStreamingObjectList<listClass,itemClass>::StreamOut(FxStream *stream)
{
if (listClass::size())
{
stream->PutSeparator();
stream->PutString(mFieldName.c_str());
stream->PutSeparator();
stream->PutBeginList();
stream->Indent(+1);
listClass::iterator iter;
for (iter=listClass::begin(); iter != listClass::end(); iter++)
{
stream->PutSeparator();
stream->PutString((*iter)->GetClassID());
}
(*iter)->StreamOut(stream);
}
stream->Indent(-1);
stream->PutSeparator();
stream->PutEndList();
stream->PutSeparator();
}
}
我得到listClass::iterator iter;
和for (iter=listClass::begin(); iter != listClass::end(); iter++)
是錯誤的:
error: expected `;' before 'iter'
error: 'iter' was not declared in this scope
在同.H其它地方,相同類型的模板聲明中我得到的錯誤如:
error: dependent-name 'listClass::iterator' is parsed as a non-type, but instantiation yields a type
at:
for (listClass::iterator iter=listClass::begin(); iter != listClass::end(); iter++)
我該如何解決這些錯誤?我不知道所有的模板,所以我很困惑,不知道從哪裏開始。一個很好的模板資源也很感激。
可能重複[在哪裏,爲什麼我必須把「模板」,並在相關的名字「類型名稱」?( http://stackoverflow.com/questions/610245/where-and-why-do-i-have-to-put-template-and-typename-on-dependent-names) – 2011-05-03 17:05:34
可能重複[何時應該使用關鍵字「typename」使用模板時](http://stackoverflow.com/questions/4227833/when-should-i-use-the-keyword-typename-when-using-templates) – 2011-05-03 17:05:40
不重複。這個問題完全與這兩者相反! – 2011-05-03 17:08:05