Я пытаюсь создать оболочку для контейнера карты STL, чтобы добавить метод const, возвращающий значение, заданное ключом. В map оператор [] не является константным, а find () требует разыменования для получения значения (map.find () -> second). Я основываю некоторые свои «исследования» на Идиоматическом C ++ для чтения с карты констант .
Код на данный момент (все в одном заголовочном файле):
#include <map>
template <typename K, typename V>
class easymap : public std::map<K, V>
{
//Constructor
easymap() : std::map<K, V>() {};
//The get method
V get(K key)
{
std::map<K, V>::const_iterator iter(find(key));
return iter != end() ? iter->second : V();
}
};
Когда я пытаюсь скомпилировать это, я получаю следующие ошибки:
In member function `V easymap::get(K)':
expected `;' before "iter"
`iter' was not declared in this scope
there are no arguments to `end' that depend on a template parameter, so a declaration of `end' must be available|
(if you use `-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
Имеет ли смысл то, как я пытаюсь сделать это? Если так, как я могу заставить это работать? Если нет, то как бы я добился желаемого эффекта?