次の方法で共有


クラス型を指定した typedef の使用

クラス型を持つ typedef 指定子の使用がサポートされているのは、主に、typedef 宣言内で名前のない構造体を宣言する ANSI C に対応するためです。 たとえば、多くの C プログラマは次のように記述します。

// typedef_with_class_types1.cpp
// compile with: /c
typedef struct {   // Declare an unnamed structure and give it the
                   // typedef name POINT.
   unsigned x;
   unsigned y;
} POINT;

このような宣言の利点は、次のような宣言を使用できることです。

POINT ptOrigin;

次のように記述する必要がありません。

struct point_t ptOrigin;

C++ では、typedef 名と実際の型 (class、struct、union、および enum のキーワードで宣言) との違いがより明確です。 typedef ステートメント内で無名の構造体を宣言する C 言語の記述法も使用できますが、C 言語に見られる表記の利点は得られません。

// typedef_with_class_types2.cpp
// compile with: /c /W1
typedef struct {
   int POINT();
   unsigned x;
   unsigned y;
} POINT;

前の例では、名前のないクラス typedef 構文を使用して、POINT という名前のクラスを宣言しています。 POINT はクラス名として扱われますが、この方法で導入された名前には次の制限が適用されます。

  • class、struct、または union プレフィックスの後には名前 (シノニム) を記述できません。

  • 名前は、クラス宣言内のコンストラクター名またはデストラクター名として使用できません。

つまり、この構文には、継承、構築、または破棄のための機能はありません。

参照

関連項目

typedef 指定子