C++ プロジェクトで Qt ライブラリを使用していますが、設計上の質問があります。データベースはどこで宣言する必要がありますか? グローバル変数を宣言しないことをお勧めします。
現在、私はこの方法でこの問題に取り組んでいます。メインウィンドウがあり、そこでDBを宣言したので、メインウィンドウでクエリを実行し、さまざまなシグナルとスロットを使用して結果をダイアログに渡します。
メイン ウィンドウの起動時に DB を起動し、ウィンドウが閉じられたら DB を閉じます。これで問題ないかどうかわかりません。DB への参照を渡すか、DB をグローバルにするために、別のクラスでも DB 接続が必要です。
私はこれらの解決策が好きではありません..この状況に対処するための標準的なパターンはありますか?
編集:
私のクラスは次のようになります。
class Database
{
public:
bool open(void);
bool close(void);
static Database* getDatabase(void);
// various methods like loadThisTable(), saveThisTable() etc
private:
Database(); // disable constructor
~Database(); // disable destructor
Database(const Database&); // disable copy constructor
Database& operator=(const Database&); // disable assignment
static Database* instance_; // database instance
QSqlDatabase qtDB; // qt db database
}
必要に応じて add メソッドと remove メソッドを追加できますが、DB インスタンスは 1 つしかありません。