Russian Qt Forum

Qt => Вопросы новичков => Тема начата: mus_zzz от Январь 20, 2016, 14:38



Название: delete [] для QVector< QVector< QState* > >
Отправлено: mus_zzz от Январь 20, 2016, 14:38
Всем привет!В конструкторе класса определил qsGrid_:
Код:
       QVector< QVector< QState* > >  qsGrid_;
      for (int y = 0; y < rows; ++y)
      {     
        for (int x = 0; x < columns; ++x)
            qsGrid_[y][x] = new QState(qsState_);
       }
В деструкторе хочу удалить:
Код:
delete [] qsGrid_;// не работает, пишет ошибку
qsGrid_..~QVector();//работает)

Если возможность удаления объекта через delete?


Название: Re: delete [] для QVector< QVector< QState* > >
Отправлено: Swa от Январь 20, 2016, 15:00
delete [] может применяться только к массивам, ваш объект qsGrid не является массивом.

Код:
for (int y = 0; y < rows; ++y)
{     
for (int x = 0; x < columns; ++x)
delete qsGrid_[y][x];
}


Название: Re: delete [] для QVector< QVector< QState* > >
Отправлено: kambala от Январь 20, 2016, 15:04
память для qsGrid_ не в куче ж выделена, потому delete и не работает.
Код
C++ (Qt)
for (int y = 0; y < rows; ++y)
   qDeleteAll(qsGrid_[y]);
qsGrid_.clear();

да, delete [] вообще только к динамическим массивам применяется.


Название: Re: delete [] для QVector< QVector< QState* > >
Отправлено: mus_zzz от Январь 20, 2016, 15:07
спасибо