я следующий код:оператор [] перегружать принять символ * для индекса
class IList{
public:
virtual const Pair *get(const char *key) const = 0;
inline const Pair *operator[](const char *key) const;
};
inline const Pair *IROList::operator[](const char *key) const{
return get(key);
}
код компилируется нормально, но когда я пытаюсь использовать:
IList *list = (IList *) SomeFactory();
Pair *p;
p = list["3 city"];
я получил:
test_list.cc:47:19: error: invalid types ‘IList*[const char [7]]’ for array subscript
p = list["3 city"];
^
Я могу понять, что индекс массива - int или char, , но затем как std :: map делает char */strings?
Каков тип 'list'? – NathanOliver
точно. list - это указатель на класс – Nick
@Nick И вы пытаетесь индексировать указатель, а не перегружать оператор. – molbdnilo