Слот Qt connect с сигналом boost :: shared_ptr - PullRequest
0 голосов
/ 11 марта 2012

У меня есть приложение главного окна, когда ярлык срабатывает, появляется диалоговое окно для отображения некоторой информации, пользователь может выполнить некоторую настройку в этом диалоговом окне, затем сигнал отправляется обратно в главное окно, главное окно выполнит некоторую дальнейшую работу,псевдокод выглядит так:

void MainWindow::actionConfigure_triggered()
{

    configureDialog = boost::shared_ptr<configure>(new configure(this));
    configureDialog->show();
    connect(configureDialog.get(), SIGNAL(reload()), this, SLOT(clean_reload()));
}

, но когда я запускал эту функцию несколько раз, возникает ошибка сегментации.Я использую отладчик для отслеживания выполнения, SIGSEGV получен при выполнении функции boost :: checked_delete.

Любая помощь будет высоко оценена!Заранее спасибо.Я просто хочу, чтобы диалог конфигурирования создавался и удалялся динамически, или есть другие лучшие способы реализовать это?

1 Ответ

0 голосов
/ 11 марта 2012

Согласно вашей обратной трассировке, ошибка кажется где-то в деструкторе configure и имеет мало общего с shared_ptr (за исключением того, что это shared_ptr вызывает деструктор) Проверьте, нет ли двойного удаления вашего объекта, если да, возможно, есть какая-то другая ссылка на него, которая не является shared_ptr для удаления объекта.

...