Я пытаюсь перегрузить оператор нижнего индекса [] в своем классе, который использует связанный список для создания карты. Это и несколько вариантов, таких как добавление const, - это то, что я пробовал.
заголовок
int& operator[](std::string key);
а затем определение перегрузки в отдельном файле
int& mapLL::operator[](std::string key){
int val = this->get(key);
return val;
}
это ошибка не знаю как исправить
main.cpp: In function ‘int main()’:
main.cpp:38:24: error: invalid types ‘mapLL*[const char [4]]’ for array subscript
int a = list3["ghi"];
^
mapLL.cpp: In member function ‘int& mapLL::operator[](std::string)’:
mapLL.cpp:110:9: warning: reference to local variable ‘val’ returned [-Wreturn-local-addr]
int val = this->get(key);
^
Затем в основном файле я пытаюсь это
mapLL *list3 = new mapLL();
list3->set("abc",1);
list3->set("def",2);
list3->set("ghi",3);
list3->set("jkl",1);
list3->toString();
cout << list3->get("ghi") << endl;
int a = list3["ghi"];
cout << a << endl;
delete list3;
получить функцию
int mapLL::get(std::string key){
bool found = false;
node *me = (node *) first;
if(is_empty()){
return -2;
}
while(!found){
if (me->getKey() == key){
return me->getValue();
}else{
if (me->getNext() == 0){
return -1;
}else{
me = (node *) me->getNext();
}
}
}
}
list3
- это указатель, поэтому вам нужно будет сделать(*list3)["ghi"]
- person Brian Bi   schedule 15.10.2015list3
как локальную или глобальную переменную безnew
. - person Thomas Matthews   schedule 15.10.2015list3["ghi"]
работало - person cmb   schedule 15.10.2015list3
указателем. Это не должно быть одним. - person jaggedSpire   schedule 15.10.2015mapLL list3;
Тогда вы сможете заставитьlist3["ghi"]
работать. - person Mohamad Elghawi   schedule 15.10.2015