Перегрузка оператора индексации []
Сегодня мы рассмотрим перегрузку операции индексации на примере класса QLdapUser, который мы создали в прошлой статье.
Оператор [] позволяет получать доступ к элементам массива, но может быть перегружен в пользовательском классе, таким образом мы сможем получить доступ к атрибутам пользователя.
Мы будем использовать проект из предыдущей статьи.
Объявим перегрузку оператора индексации в классе QLdapUser:
public:
QString operator [](const QString index) const;
Реализация:
QString QLdapUser::operator[] (const QString index) const
{
assert(index.compare("") != 0);
return this->getUserValue(index);
}
Теперь, чтобы проверить добавим код в конструктор главной формы:
QLdapUser user1 = QLdapUser(&a);
qDebug() << user1["company"];
qDebug() << user1["displayName"];
Запустим:
"Altunin Soft" "Павлова Ясмина Всеволодовна"
Если мы попробуем указать пустую строку
qDebug() << user[""];
То получим сообщение:
Использование указателя
В конструктор главной формы добавим код:
QLdapUser *user2 = new QLdapUser(&a);
qDebug() << user2["company"];
qDebug() << user2["displayName"];
И сразу получим две ошибки:
invalid types 'QLdapUser*[const char [ХХ]]' for array subscript
Для решения этой проблемы просто перепишем код:
QLdapUser *user2 = new QLdapUser(&a);
qDebug() << (*user2)["company"];
qDebug() << (*user2)["displayName"];
Заключение
Сегодня мы рассмотрели перегрузку оператора индексации []
Мы перегрузили оператор [] для класса QLdapUser
Рассмотрели, как использовать перегрузку при использовании указателей.
Исходный код вы можете скачать на GitFlic
Добавить комментарий