Russian Qt Forum
Ноябрь 26, 2024, 03:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка при обращении к элементам списка  (Прочитано 4342 раз)
lighting
Гость
« : Январь 18, 2012, 13:00 »

Создал структуру для своих данных
Код
C++ (Qt)
struct Participant
{
   int extNumber;
   QString IPAddress;
   int volume;
   bool muteState;
   bool muteMicState;
   int layout;
   bool focused;
};

Когда создаю экземпляр структуры все Ок

Код
C++ (Qt)
  Participant part;
   part.extNumber = 0;
 
Но когда создаю список таких структур и пытаюсь обратиться к элементам получаю ошибку

Код
C++ (Qt)
   QList<Participant> parts;
   parts.append(part);
   parts.at(0).extNumber = 0;
 
ошибка: assignment of data-member 'Participant::extNumber' in read-only structure
Константной я ее не объявлял, до заключения в список работать с ней было можно, в чем-же проблема при добавлении ее в список?
Записан
BRE
Гость
« Ответ #1 : Январь 18, 2012, 13:05 »

Ну так компилятор тебе все объяснил:
assignment of data-member 'Participant::extNumber' in read-only structure

Если ты посмотришь на то, как как определен at:
const T & QList::at ( int i ) const
в особенности на const, то все станет ясно.

Ну и сразу стоит обратить внимание на:
T & QList::operator[] ( int i )
const T & QList::operator[] ( int i ) const

как видишь у этого оператора есть версия без const.
Записан
lighting
Гость
« Ответ #2 : Январь 18, 2012, 13:12 »

BRE спасибо огромное, а я совсем не в ту сторону смотрел - все свои классы перебирал на предмет ошибок.
Записан
BRE
Гость
« Ответ #3 : Январь 18, 2012, 13:33 »

Кстати, рекомендую для таких структур/классов использовать QSharedData/QSharedDataPointer (в документации есть пример).
« Последнее редактирование: Январь 18, 2012, 14:14 от BRE » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.173 секунд. Запросов: 20.