How to represent some type inherted from other template, in a C++ template class?

• 本文约 66 字,阅读大致需要 1 分钟 | Development

It’s not quite easy to represent a type that is found in base “template class”. Consider the following code:


template <class Key,class T>     class CMyClass: public map<Key,T> { public:     void lookup(Key x)     {         map<Key,T>::iterator iter;         iter = find(x);     } };


You will find that the bold line won’t compile.

To correct this, add “typename” to explicitly specify that map<Key,T>::iterator is a type name. Example:

typename map<Key,T>::iterator