Я хочу создать класс в c ++.Этот класс должен управлять с коллекцией.ОК, нет проблем, я бы хотел использовать operator [], конечно, но в этом случае я хочу индексировать не по позиции, а по имени ==>, что означает использование строкового индексатора.
ЭтоКажется, что-то подобное не так приятно для моего компилятора:
// In hpp
class myclass {
...
...
std::string operator[](const std::string& name);
}
// In cpp
std::string myclass::operator[](const std::string& name) {
...
}
// In main
myclass m;
std::string value = m["Name"];
Компилятор говорит мне, что он не может решить эту проблему, потому что operator [const char [5]] не существует.Хорошо, хорошо, я мог бы понять это ... Компилятор думает, что, вызывая m ["Name"], я пытаюсь вызвать оператор, допускающий символ *, а не строку ... хорошо Давайте изменим код с помощью оператора [], позволяющегоchar * в качестве параметра ... ничего.
Может кто-нибудь сказать мне, как достичь такого результата в c ++ наилучшим образом?Я полагаю, что это общая проблема для индексации по строке, а не по целому числу ... Спасибо.