В настоящее время я работаю над интерфейсом для случайного приложения. В интерфейсе есть QListView
, который имеет три связанные с ним кнопки. Первая добавляет, добавляет новый элемент в виджет, эта кнопка отлично работает. Проблема связана с кнопкой очистки:Ошибка при использовании Qt и уникальных указателей
void NeuralNetwork::on_clearButton_clicked() {
this->model.get()->clear();
this->item.clear();
}
как вы видите, как модель, так и элемент являются атрибутами этого класса. Они объявлены как это:
std::unique_ptr<QStandardItemModel> model = unique_ptr<QStandardItemModel>(new QStandardItemModel());
vector<unique_ptr<QStandardItem>> item;
Изначально я использовал обычные указатели, но, как я искал в Интернете, люди рекомендовали, используя уникальные указатели для обработки управления памятью.
Я думаю, что есть что-то не так с
this->model.get()
, но я не знаю точно, так как у меня нет опыта работы с смарт-указатели. Обратите внимание, что программа не получает ошибок построения, она работает нормально, пока я не нажму кнопку очистки на интерфейсе, затем программа выйдет из строя:
Программа неожиданно завершена.
Что вы используете 'this-> model.get()' for? –
2. Вы помещаете 'QStandardItemModel' в форму и устанавливаете ее родитель? –
как я понимаю, model.get() возвращает мне указатель на объект, поэтому я могу использовать его методы. Но теперь я думаю, что я сброшу умные указатели и вместо этого буду использовать обычные указатели, поскольку Вернер Эразм сказал, что он избыточен. – lhahn