在 Qt-creator 的 C++ 项目中,我有一个类 Settings,它存储了一些我想在类 App 中使用的设置(App 可以操作设置,删除 App 后我需要这个更新的数据)。首先,我为每个类定义一个指针,声明它并将设置传递给 App。
设置.h:
class Settings {
public:
Settings();
// ...
}
应用程序.h:
class App {
public:
App(Settings *set);
private:
Settings *s;
// ...
}
应用程序.cpp:
App::App(Settings *set){
s = set;
// manipulate s...
}
主文件
Settings* s;
App* a;
主文件
// ...
s = new Settings;
a = new App(s);
// ...
if(!aIsNeeded)
delete a;
// from here, s is deleted too
这很好,直到我再次需要具有相同设置的应用程序。当我调用 a = new App(s); 有一个例外,因为 s 似乎也被删除了。
有更好的方法吗?为什么要删除s?
感谢您的回答!
编辑:问题是设置为 QWidget 被添加到 App 的 ui 中,因此成为 App 的子项。a
我通过在before的析构函数中添加这一行来解决它delete ui;
:
s->setParent(0);
感谢所有提示!