LINUX.ORG.RU

Не работает запись в QVector<QVector

 ,


0

1

В материнском классе объявлен QVector< QVector<int> > data. В дочерний передается &data. Там этот указатель пишется в локальную переменную.

После чего пытаюсь достучаться до элемента и не стучится - говорит что это все read only и типа фиг тебе, программист:

        for (int y = 0; y < Ybox; y++)
        {
            data->append(QVector<int>(Xbox));

            for (int x = 0; x < Xbox; x++)
            {
                data->at(y)[x] = img.pixel(x, y);
            }
        }


Последнее исправление: Edible (всего исправлений: 1)
Ответ на: комментарий от Uter

Что конкретно тебе непонятно? Я весь код описал.

QVector< QVector< int > > dataBox;
...
QVector< QVector< int > > * data;
...
data = &(this->dataBox);
...
        for (int y = 0; y < Ybox; y++)
        {
            data->append(QVector<int>(Xbox));

            for (int x = 0; x < Xbox; x++)
            {
                data->at(y)[x] = img.pixel(x, y);
            }
        }
/home/alex/Проекты/TexEditor 2/TE2/dialogeditor.cpp:72: ошибка: assignment of read-only location '(&((dialogEditor*)this)->dialogEditor::data->QVector<T>::at<QVector<int> >(y))->QVector<T>::operator[]<int>(x)'
                 data->at(y)[x] = img.pixel(x, y);
                                ^
Edible
() автор топика

at

Надо хоть иногда смотреть в документацию. Используй [].

anonymous
()
Ответ на: комментарий от Edible

Ох, у тебя там ещё и указатель. Ну какие проблемы, будет (*data)[y][x]. Более важный вопрос зачем ты так делаешь.

mix_mix ★★★★★
()
Ответ на: комментарий от Edible

Шо ты, шо анон. Догадайся, что будет, если применить [] к *.

Крайне рекомендую ознакомиться с базовыми понятиями в С++. Если тебя даже разыменовывание указателя в тупик ставит.

anonymous
()
Ответ на: комментарий от mix_mix

Более важный вопрос зачем ты так делаешь.

Мать хранит данные, дети-редакторы разных типов их используют.

будет (*data)[y][x]

Спасибо.

Edible
() автор топика
Ответ на: комментарий от Edible

Причем можно и с указателем:

data->operator[]( y );

Просто выглядеть будет многословно.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.