私は基本的なSQLiteラッパーを書いています。これを行っている間、SQLiteデータベースを手動で開いたり閉じたり、SQLiteのAPIを使用してSQLiteコンパイル済みステートメント構造体を作成および破棄していることに気付きました。これらのリソースを手動で作成/破棄します。私が学んでいることは、エラーが発生したときに関数が時期尚早に戻らなければならないときに、ちょっと厄介になります。
これを処理するより多くのC++の方法は、スタック上のオブジェクトの存続期間にこれらのものをRAIIスタイルで管理させることであると私は思いました。そうすれば、関数から戻るときはいつでも(早期にエラーが発生したかどうかにかかわらず)、これらのクリーンアップタスクは、スタックがほどけるときにデストラクタによって処理されます。
私の質問は、これらのヘルパーRAIIクラス(SQLiteDBHandle、SQLiteStatementHandleなど)の使用がより大きなSQLiteラッパークラスに関連付けられている場合、SQLiteラッパー内でプライベートネストクラスとして宣言するか、単に宣言して定義する方がよいでしょう。独自のヘッダーと実装ファイルのないSQLiteラッパーの実装ファイル?
.cppファイルにスタンドアロンクラスとして配置する傾向があります。
私が見逃している大きなラッパーの.cppファイルに隠されているものを宣言して定義するだけの欠点はありますか?