Iter私はとして宣言する必要がありますtypenameが、ありませんtypedef。
次に、宣言で使用できませんIter= template class>イライラします:(
使用方法を教えてくださいIter、またはC++がとても厄介な理由を説明してください...
template <typename T>
struct MyContainer
{
typedef std::vector<T> Vec;
typename Vec::iterator Iter;
void Fo (typename std::vector<T>::iterator); //ok
typename std::vector<T>::iterator Ba(); //ok
void Foo (Iter); //error: 'Iter' is not a type
Iter Bar (); //error: 'Iter' does not name a type
}; //(gcc 4.1.2)
- なぜ
typedef宣言に使用できないのIterですか?なぜだめですか? Iter内での使用方法はtemplateclass?(例えば、関数パラメータタイプとして)
編集
命令typename Vec::iterator Iter;でキーワードtypenameが言うVec::iteratorのはタイプです(つまり、静的メンバー関数/属性ではありません)。したがって、は型としてでIterはなく、型を使用する変数として宣言されますVec::iterator。