クラス型で 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 の名前の相違点と実際の型 ( クラス struct 共用体 と enum のキーワードで宣言) は異なります。typedef のステートメントで名前の構造体の宣言の C の推奨事項は引き続き動作するがC のように表記の利点はありません。
// typedef_with_class_types2.cpp
// compile with: /c /W1
typedef struct {
int POINT();
unsigned x;
unsigned y;
} POINT;
前の例ではクラスを POINT とクラスの typedef のない構文を使用してとして宣言します。POINT はクラス名として扱われます ; ただし次の制限が名前についてこの方法で対象 :
名前 (シノニム) は クラス structまたは 共用体 のプレフィックスの後では使用できません。
名前はクラスの宣言内のコンストラクターまたはデストラクターの名前として使用できません。
まとめるとこの構文は継承構築または破棄の機能を提供しません。