私の現在の仕事では、変数が cpp ファイルの名前のない名前空間で宣言されており、メンバー変数であるかのようにそのクラスでのみ使用されています。
インターフェイス情報のみを .h に保持し、実装を .cpp に保持する興味深い方法であり、通常の pimpl イディオムよりも手間がかかりません。
ニキビをいつも使っている人を見かけますが、このアプローチは一度もありません。何か問題はありますか?
私の現在の仕事では、変数が cpp ファイルの名前のない名前空間で宣言されており、メンバー変数であるかのようにそのクラスでのみ使用されています。
インターフェイス情報のみを .h に保持し、実装を .cpp に保持する興味深い方法であり、通常の pimpl イディオムよりも手間がかかりません。
ニキビをいつも使っている人を見かけますが、このアプローチは一度もありません。何か問題はありますか?
.cpp ファイルの名前のない名前空間で宣言された変数は、ファイル スコープです。これは、プログラムの実行ごとに 1 つのインスタンスしか存在しないことを意味します。
これは、オブジェクトの 2 つのインスタンスを作成し、それらが名前のない名前空間で互いの変数に干渉することを観察することで、自分で確認できます。
いくつかのサンプルコードを示してください。私の知る限り、名前のない名前空間でメンバー変数を宣言することはできません(クラス自体が名前のない名前空間で宣言されていない限り)。
名前のない名前空間は、1 つのコンパイル単位でのみ使用される変数を static として宣言する一般的な方法を置き換えるために導入されました。