У меня есть несколько классов в проекте, которые я унаследовал, которые действительно старые, в последний раз я знал, что они скомпилированы с CodeWarrior 8. Сейчас я нахожусь в XCode 3.2
Вот пример того, с чем я борюсь:
template <class registeredObject>
typename std::vector<registeredObject>::iterator FxRegistry<registeredObject>::begin(void)
{
return mRegistryList.begin();
}
Ошибки:
no 'typename std::vector<registeredObject, std::allocator<_CharT> >::iterator FxRegistry<registeredObject>::begin()' member function declared in class 'FxRegistry<registeredObject>'
template definition of non-template 'typename std::vector<registeredObject, std::allocator<_CharT> >::iterator FxRegistry<registeredObject>::begin()'
Как мне решить, как их решить и с чего начать искать?
ОБНОВЛЕНИЕ: Вот класс FxRegistry:
template <class registeredObject>
class FxRegistry
{
public:
// Construction
FxRegistry() {}
~FxRegistry();
// List management
void Register(const registeredObject &ob);
void Unregister(registeredObject &ob);
// List iteration
typedef std::vector<registeredObject>::iterator iterator;
typedef std::vector<registeredObject>::const_iterator const_iterator;
std::vector<registeredObject>::iterator begin(void);
std::vector<registeredObject>::const_iterator begin(void) const;
std::vector<registeredObject>::iterator end(void);
std::vector<registeredObject>::const_iterator end(void) const;
FxSize size(void);
void Insert(iterator iter,const registeredObject &ob);
registeredObject &operator[](FxInt32 index) { return mRegistryList[index]; }
void clear() {mRegistryList.clear();};
protected:
vector<registeredObject> mRegistryList;
};
Я получаю сообщения об ошибках в каждой строке выше:
ошибка: тип 'std :: vector>' не является производным от типа 'FxRegistry'
ошибка: ожидается ';' перед «итератором»
Я думал, что итератор имеет векторный тип, поэтому я бы объявил один векторный итератор.