1. ホーム
  2. c++

[解決済み] C++のusing宣言のスコープとは?

2022-10-11 20:10:29

質問

C++のusing宣言を使って、std::stringとstd::vectorをローカル名前空間に追加しています(不要なstd::の入力を省くため)。

using std::string;
using std::vector;

class Foo { /*...*/ };

この宣言のスコープはどうなっていますか? ヘッダでこれを行った場合、ヘッダを含むすべてのcppファイルにこれらのusing宣言が注入されるのでしょうか?

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

C++でヘッダーファイルを#includeすると、ソースファイルのincludeした場所にヘッダーファイルの内容全体が配置されます。そのため using 宣言があるファイルをインクルードすると、そのファイルに using 宣言をそのヘッダーファイルを含む各ファイルの先頭に置くのと全く同じ効果があります。