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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: delete [] для QVector< QVector< QState* > >  (Прочитано 2770 раз)
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?
Записан
Swa
Самовар
**
Offline Offline

Сообщений: 170


Просмотр профиля
« Ответ #1 : Январь 20, 2016, 15:00 »

delete [] может применяться только к массивам, ваш объект qsGrid не является массивом.

Код:
for (int y = 0; y < rows; ++y)
{     
for (int x = 0; x < columns; ++x)
delete qsGrid_[y][x];
}
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4732



Просмотр профиля WWW
« Ответ #2 : Январь 20, 2016, 15:04 »

память для qsGrid_ не в куче ж выделена, потому delete и не работает.
Код
C++ (Qt)
for (int y = 0; y < rows; ++y)
   qDeleteAll(qsGrid_[y]);
qsGrid_.clear();

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
mus_zzz
Гость
« Ответ #3 : Январь 20, 2016, 15:07 »

спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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