У меня есть этот класс:
template <class S, class P, class A>
class Task
{
private:
timeval start;
boost::ptr_vector<S> states;
boost::ptr_vector<P> policies;
public:
P findPolicy(S *state);
S findState(S *state);
};
Когда я пытаюсь определить findPolicy или findState с помощью итератора:
template <class S, class P, class A>
S Task<S,P,A>::findState(S *state)
{
boost::ptr_vector<S>::iterator it;
for ( it = policies.begin(); it < policies.end(); ++it)
{
// blah
}
}
Определено после класса, компилятор говорит:
error: expected ';' before it;
Даже попытка определить функцию в объявлении класса выдает мне ту же ошибку.Я озадачен, поскольку именно так я до сих пор использовал итераторы boost :: ptr_vector.Единственная вещь, которая, кажется, работает, - это старый добрый старомод:
for (int i = 0; i < policies.size(); i++)
{
if (policies[i].getState() == state)
{
return policies[i];
}
}
Что мне не хватает?