関数宣言内のパラメーター名

C++ユーザーが関数宣言でパラメーターの名前を付けることは可能ですが、 次の 2 つの状態にある場合を除いて、コンパイラーはその名前を無視します。

  1. 1 つの宣言内に同じ名前のパラメーターが 2 つある場合。 これはエラーになります。
  2. パラメーターの名前が、関数外の何かの名前と同じである場合。 この場合、関数外の名前は隠され、パラメーター宣言でこの名前を使用することはできません。

次の例では、3 番目のパラメーター名 intersects は、 列挙型 subway_line を持つことを意味します。 しかし、この名前は、最初のパラメーターの名前によって隠蔽されています。関数 subway() の宣言は、subway_line が有効な型名ではないので、 コンパイル時エラーを引き起こします。 なぜ有効でないかというと、最初のパラメーター名 subway_line が、 ネーム・スペース・スコープ enum 型を隠蔽し、2 番目のパラメーターで再度使用することができないからです。

enum subway_line {yonge,
university, spadina, bloor};
int subway(char * subway_line, int stations,
                  subway_line intersects);

関連参照

IBM Copyright 2003