Qt-creator の C++ プロジェクトには、クラス App で使用するいくつかの設定を格納するクラス Settings があります (App は Settings を操作でき、App の削除後にこの更新されたデータが必要です)。最初に、各クラスのポインターを定義し、それを宣言して、Settings を App に渡しました。
settings.h:
class Settings {
public:
Settings();
// ...
}
app.h:
class App {
public:
App(Settings *set);
private:
Settings *s;
// ...
}
app.cpp:
App::App(Settings *set){
s = set;
// manipulate s...
}
main.h
Settings* s;
App* a;
main.cpp
// ...
s = new Settings;
a = new App(s);
// ...
if(!aIsNeeded)
delete a;
// from here, s is deleted too
同じ設定でアプリが再び必要になるまで、それはうまくいきます。= new App(s); を呼び出すと、s も削除されているように見えるため、例外があります。
これに対するより良いアプローチはありますか?なぜ削除されたのですか?
答えてくれてありがとう!
編集: 問題は、QWidget としての設定がアプリの ui に追加されたため、アプリの子になったことです。a
beforeのデストラクタに次の行を追加して解決しましたdelete ui;
:
s->setParent(0);
すべてのヒントをありがとう!