私はいくつかの「パッケージ」で構成されているユーティリティライブラリを書いています。各パッケージのクラスは、さまざまな名前空間に含まれています。クラス宣言の最後にステートメントを使用して自動的に宣言することで状況を単純化する方法についての考えがあります(以下を参照)。これにより、プログラマーがcppファイルでそれを行う必要がなくなります。
namespace Utility
{
class String
{
// Class Implementation
};
}
using Utility::String;
私の理解では、ユーザーがヘッダーString.hを含み、StringがUtilityにある場合、プログラマーはStringを使用したいと思うでしょう。明らかに、名前空間を汚すファイルの束を含む外部のクラスチェーンがある場合、これは悪い可能性があるので、代わりに#defineにするのはどうでしょうか。
namespace Utility
{
class String
{
// Class Implementation
};
}
#ifdef AUTO_DECLARE_NAMESPACE
using Utility::String;
#endif
そうすれば、この拡張機能が必要なプログラマーはそれを手に入れることができます。
これは良い考えですか、それとも私が見落としているものがありますか?