クラスがあり、そのオブジェクトは次のように別のクラスで使用されます
class A
{
public:
void F() {...}
};
class B
{
public:
void G() { m_a->F(); ...} // use A's function
private:
A* m_a;
};
したがって、ポインター m_a の代入の前に B::G() を呼び出すのは間違っています。これは受け入れられるデザインですか?または、それを行うより良い方法があります。
質問は、GUI アプリケーションの開発から来ています。メイン ウィンドウの下にウィンドウがあり、現在の操作の基本情報 (何が起こっているか、どれくらい時間がかかるかなど) を表示します。どこにでも散らばる可能性のある操作で簡単にアクセスできるように、このウィンドウをシングルトンとして配置し、GUI アプリケーションを閉じるときにコードがクラッシュすることを発見しました。クラッシュは、GUI アプリケーション (Qt の qApp など) の削除後にウィンドウが削除されることが原因です。次に、ウィンドウの参照ポインターをシングルトンに配置します。ウィンドウが構築されたら、参照ポインターを設定します。ウィンドウの削除は、メイン ウィンドウによって制御されます。したがって、上記のクラッシュの問題は解決されます。ただし、ウィンドウが構築される前に他の開発者がシングルトンを使用すると、コードもクラッシュします。それを解決する良い方法はありますか?それとも、構築する前にそれを使用するのは開発者の間違いであるため、そのまま受け入れることができますか? どうもありがとう!