私はテンプレートとデザインパターンを試してみて、テンプレート引数ITEMを使用してイテレータパターンを作成したいと思います。しかし、私のプライベートメンバーvarはそれ自身がテンプレートであるSTLコンテナなので、STLコンテナのテンプレート引数をクラステンプレートで使用されるものとどのように同期させることができますか?2番目のテンプレート(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タイプにのみ適しているメインを持っています。私が「テンプレート引数」や「テンプレートパラメータ」などの間違った用語を使用してしまった場合はどうか教えてください。