Отладка шаблонов в C ++ - PullRequest
       0

Отладка шаблонов в C ++

0 голосов
/ 22 апреля 2010

У меня есть шаблон класса, который:

template <class identifier,class registeredObject>
class FxPairRegistry : public FxRegistry<pair<identifier,registeredObject> >
{
 public:
  registeredObject GetEntry(identifier, FxBool assertValue = true);
  void RegisterInOrder(const pair<identifier,registeredObject> &ob);

  typedef typename std::vector<pair<identifier,registeredObject> >::iterator iter;
};

У меня тогда есть:

template <class identifier,class registeredObject>
registeredObject FxPairRegistry<identifier,registeredObject>::GetEntry(identifier id, FxBool 
assertValue)
{
 for (iterator iter = mRegistryList.begin(); iter != mRegistryList.end(); iter++)
 {
  if ((*iter).first == id)
  {
   return (*iter).second;
  }
 }
}

Но я получаю такие ошибки, как:

error: missing template arguments before 'iter'
error: expected `;' before 'iter'
error: expected primary-expression before '!=' token
error: 'mRegistryList' was not declared in this scope
error: expected primary-expression before '++' token
error: expected primary-expression before ')' token
error: expected primary-expression before ')' token
error: missing template arguments before 'iter'
error: expected `;' before 'iter'
error: expected primary-expression before '!=' token
error: 'mRegistryList' was not declared in this scope
error: expected primary-expression before '++' token

Я не совсем понимаю, что я делаю неправильно, но я немного ржавый ...

Ответы [ 2 ]

5 голосов
/ 22 апреля 2010

Кажется, что здесь вы определяете тип с именем iter:

typedef typename std::vector<pair<identifier,registeredObject> >::iterator iter;

А тут вот:

iterator iter = mRegistryList.begin()

Вы пытаетесь определить переменную с именем iter типа iterator, которая (из показанного вами кода) не является именем какого-либо существующего типа.

2 голосов
/ 22 апреля 2010

Проверьте ваш цикл.Что должен делать iterator iter = ...?Вы напечатали итераторы как iter, так что iter становится именем типа, который вы хотите объявить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...