Я экспериментирую с шаблонами и шаблонами проектирования и хотел бы создать шаблон итератора с использованием аргумента шаблона ITEM. Однако мой частный член var является контейнером STL, который сам является шаблоном, поэтому как я могу «синхронизировать» аргумент шаблона контейнера STL с тем, который используется шаблоном класса?Использование параметра шаблона во втором шаблоне (контейнер STL)
Вот фактический класс:
#include "StatusIteratorInterface.h"
#include "StatusContainer.h"
#include <map>
template<typename ITEM> class StatusContainer;
template <typename ITEM>
class StatusIterator : public StatusIteratorInterface<ITEM> {
public:
StatusIterator(StatusContainer<ITEM>* container);
ITEM* getFirst(void);
ITEM* getNext(void);
bool isDone(void);
ITEM* getCurrent(void);
private:
StatusContainer<ITEM>* container_;
ITEM* currentItem_;
std::multimap< std::pair<std::string, uint32_t>, ITEM >::iterator conIter1_; //gives error
std::multimap< std::pair<string, uint32_t>, uint32_t>::iterator conIter_;
};
conIter_ это хорошо, но 'жесткие коды' мой шаблон значение. включая линию над ней дает эту ошибку компиляции:
/Users/joe/Developer/Template_DesignPattern_Iterator/StatusIterator.h:33: error: expected ';' before 'conIter1_'
У меня есть главный, который компилирует и запускает этот код отлично, но, очевидно, подходит только для типов uint32_t. Простите меня, если я использовал неправильную терминологию, такую как параметр шаблона «параметр шаблона».