Четверг, 28.01.2021 08:00

Перегрузка оператора индексации []

Перегрузка оператора индексации []

Сегодня мы рассмотрим перегрузку операции индексации на примере класса 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

Категория C++

Добавить комментарий

Простой текст

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.
Просмотров: 157