匿名クラス型
クラスは匿名にできます。つまり、"識別子"なしで宣言できます。 これは、次のようにクラス名を typedef
名で置き換える場合に役立ちます。
typedef struct
{
unsigned x;
unsigned y;
} POINT;
Note
前の例で示した匿名クラスの使用は、既存の C コードとの互換性を維持するために役立ちます。 一部の C コードでは、無名構造体と共に typedef
を使用するのが一般的です。
匿名クラスは、次のように、クラス メンバーへの参照が別のクラスに含まれていないかのように見せる場合にも役立ちます。
struct PTValue
{
POINT ptLoc;
union
{
int iValue;
long lValue;
};
};
PTValue ptv;
上記のコードでは、 iValue
次のようにオブジェクト メンバー選択演算子 (.) を使用してアクセスできます。
int i = ptv.iValue;
匿名クラスには、特定の制限が適用されます (匿名共用体の詳細については、以下を参照してください 。Unions.)匿名クラス:
コンストラクターやデストラクターを持つことはできません。
型チェックが省略記号を使用して無効化されていない限り、関数に引数として渡すことはできません。
関数の戻り値として返すことはできません。
匿名構造体
Microsoft 固有の仕様
Microsoft の C 拡張機能を使用すれば、名前を指定せずに、別の構造体内に構造体変数を宣言できます。 このような入れ子の構造体を "匿名構造体" といいます。 C++ では匿名構造体を使用できません。
匿名構造体のメンバーには、包含構造体のメンバーと同じようにアクセスできます。
// anonymous_structures.c
#include <stdio.h>
struct phone
{
int areacode;
long number;
};
struct person
{
char name[30];
char gender;
int age;
int weight;
struct phone; // Anonymous structure; no name needed
} Jim;
int main()
{
Jim.number = 1234567;
printf_s("%d\n", Jim.number);
}
//Output: 1234567
Microsoft 固有の仕様はここまで
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示