1. ホーム
  2. c++

[解決済み] 名前空間を「使用しない」ようにするには?

2023-04-13 09:56:32

質問

私の開発システム (Codegear C++Builder) の気まぐれのひとつに、自動生成されたヘッダーの一部が、...

using namespace xyzzy

...その中のステートメントは、私が最も望まない、あるいは予期しないときに私のコードに影響を与えます。

これを避けるために、どうにかして以前の "using" ステートメントをキャンセルまたは上書きする方法はないでしょうか。

多分...

unusing namespace xyzzy;

どのように解決するのですか?

いいえ。しかし、潜在的な解決策はあります。includeディレクティブを、以下のように独自の名前空間で囲むと...

namespace codegear {
    #include "codegear_header.h"
} // namespace codegear

...すると、そのヘッダ内のどの using ディレクティブの効果も無効になります。

これは場合によっては問題かもしれません。そのため、すべての C++ スタイルガイドで ではなく using namespace" ディレクティブをヘッダーファイル内に置くことを強く推奨している理由です。