C++でSQLテーブルを記述する定義リストを作成する必要があります。現時点では私は初期化する場合は、この方法でそれは本当に本当のオブジェクトである必要はありません、それはかなり便利であるとして、このようにそれをやっている:静的定義リスト
namespace Table_name
{
static ColumnList Cols("Table_name");
static const Column Id ("Id INTEGER PRIMARY KEY", Cols);
static const Column Col_name ("Col_name TEXT", Cols);
}
(外側の名前空間を、using
など省略)
各列がリストに登録されるように、各コンストラクターにColsを渡します。私はリストを得るためにTable_name::Col_name
またはTable_name::Cols
として両方を使用します。当時はかなりうまくいっていましたが、最終的に発生する可能性のある静的変数へのマルチスレッドアクセスのためにいくつかの問題があることに気付きました。または、これらの問題はローカル静的変数にのみ関連していますか?
これを安全にするために、どうやってこれをやり直すことができますか?同様に便利な定義と列変数とそのリストへのアクセスはありますか?私は各列が単一の場所で定義されると期待しているので、列挙型、 "通常の"変数などは動作しません。また、DEF_COL(Col_name, "...");
のようなマクロの使用がこの場合適切であると思いますか?ありがとう。
シングルトンを使用するとリストの簡単な定義を持つことができません...私はMySql ++のSSQLをチェックしました。マクロを使用してこれを達成しました//次は非常に複雑なマクロを呼び出します。マクロは適切です:)何か簡単な方法が必要ですが、とにかく参考に感謝します。 –
ええ、マクロはこのような場合によく使用されます。あなたの仕事を簡素化するためにBoost Preprocessor(http://www.boost.org/doc/libs/1_45_0/libs/preprocessor/doc/index.html)を見てください。このライブラリは本当に複雑なマクロをサポートしています –