3

名前がクラス定義の一部で基底クラス メンバーを参照し、別の部分で派生クラス メンバーを参照することは合法ですか? このコードはそれを示しています:

struct Base
{
  typedef int T;
};


struct Derived : Base
{
  T m1; //type int
  typedef T *T;
  T m2; //type int*
};

標準でこれに対する決定を見つけることができませんでした。コードは合法ですか?

4

3 に答える 3

1

私はそれが合法であると信じています(typedef確かに表示された順序で処理されます)が、将来コードを読もうとする人にとってはひどく混乱するでしょう.

セカンダリ タイプの名前を変更する方がはるかに理にかなっています。

 typedef T *Tptr; 
 Tptr m2;
于 2013-07-15T15:50:44.033 に答える