我覺得我的問題是模板相關的,但我只是不知道。我喜歡歌廳的錯誤:C++模板幫助
error: conversion from '__gnu_cxx::__normal_iterator<FxStreamable* (***)(), std::vector<FxStreamable* (**)(), std::allocator<FxStreamable* (**)()> > >' to non-scalar type '__gnu_cxx::__normal_iterator<std::pair<FxClassID, FxStreamable* (*)()>*, std::vector<std::pair<FxClassID, FxStreamable* (*)()>, std::allocator<std::pair<FxClassID, FxStreamable* (*)()> > > >' requested
和
no match for 'operator!=' in 'itera1 != ((FxPairRegistry<FxClassID, FxStreamable* (*)()>*)this)->FxPairRegistry<FxClassID, FxStreamable* (*)()>::mRegistryList. std::vector<_Tp, _Alloc>::end [with _Tp = FxStreamable* (**)(), _Alloc = std::allocator<FxStreamable* (**)()>]()'
代碼看起來像
for (iter itera1 = mRegistryList.begin(); itera1 != mRegistryList.end(); itera1++)
{
if ((*itera1).first == id)
{
return (*itera1).second;
}
}
可以任何人揭示了什麼錯誤一些輕?
UPDATE:mRegistryList定義vector<registeredObject *> mRegistryList;
UPDATE:伊特拉是限定typedef typename std::vector<pair<identifier,registeredObject> >::iterator iter;
UPDATE 3:
template <class identifier,class registeredObject> registeredObject FxPairRegistry<identifier,registeredObject>::GetEntry(identifier id, FxBool assertValue)
{
for (std::vector<registeredObject *>::iterator itera1 = mRegistryList.begin(); itera1 != mRegistryList.end(); itera1++)
{
if ((*itera1).first == id)
{
return (*itera1).second;
}
}
if (assertValue)
ASSERT_MSG(0,"Entry not found in the registry");
return NULL;
}
告訴它將其視爲類型。什麼是mRegistryList?你是如何定義itera1的? – Bart 2011-04-18 21:35:49
請編輯和粘貼'mRegistryList'的定義。 – 2011-04-18 21:36:27
你可以添加mRegistryList和itera1的聲明嗎? – 2011-04-18 21:37:30