ローカル型名

C++ローカル型名は、他の名前と同じスコープ規則に従います。 クラス宣言の中で定義される型名にはクラス・スコープがあり、 修飾をしなければ、それらのクラスの外側で使用することはできません。

型名で使用されているクラス名、typedef 名、または定数名をクラス宣言で使用すると、 その名前をクラス宣言で再定義することはできません。

次に例を示します。

int main ()
{
      typedef double db;
      struct st
      {
            db x;
            typedef int db; // error
            db y;
      };
}

次の宣言は有効です。

typedef float T;
class s {
      typedef int T;
      void f(const T);
};

ここで、関数 f() は型 s::T の引き数を 取ります。しかし、s のメンバーの順序が逆になっている以下の宣言は、 エラーとなります。

typedef float T;
class s {
      void f(const T);
      typedef int T;
};

クラス宣言で一度その名前を使用したクラス名または typedef 名に 対して、クラス名または typedef 名でない名前をクラス宣言で 再定義することはできません。

関連参照

IBM Copyright 2003