В настоящее время я пытаюсь создать итератор для пользовательского класса, и он не очень хорошо работает: проблема, с которой я столкнулся, заключается в том, что мой пользовательский класс использует шаблон и выглядит примерно так:
template<class T>
class MyClass {
private:
T memberVar;
};
Теперь MyClass - это в основном оболочка для memberVar, которая на данный момент является картой или картой карт.Теперь я хотел бы создать итератор в другом классе и делать с ним полезные вещи, например, обращаться к элементам на моей карте или карте карт.
Я попытался перенаправить свой итератор с моей карты, что не позволяетДайте мне ошибку в MyClass, когда я сделаю что-то вроде typedef T::iterator iterator;
, но, очевидно, он не хочет быть милым со мной, когда я хочу позвонить myIterator->first
, потому что теперь он больше не верит мне, что это будет работать.Честно говоря, я был удивлен, увидев, что мой typedef действительно работает.
Теперь мой вопрос: есть ли хороший способ сделать то, что я хотел бы сделать?Или я тут загнал себя в угол?Большое спасибо заранее!
Simon
Еще немного информации:
В ClassA я создаю экземпляр ClassB, который затем наследует MyClass с правильным типом T. Затем в ClassAЯ также создаю экземпляр ClassC, на который я ссылаюсь на ClassB.Теперь возникает ошибка, когда я пытаюсь создать myIterator
в ClassC и пытаюсь сделать myIterator->first
.