私はこのように定義された構造体を持っています:
struct GameState {
int score;
int moves;
bool won;
void *metadata;
};
typedef struct GameState GameState;
メタデータポインタは、実行時に決定されたタイプの別の構造体を指します。たとえば、次のようになります。
struct KlondikeMetadata{
bool draw3;
int drawcount;
};
typedef struct KlondikeMetadata KlondikeMetadata;
または多分:
struct FreeCellMetadata{
int reserveCells;
};
typedef struct FreeCellMetadata FreeCellMetadata;
使用される実際のメタデータ構造体は、ユーザーがプレイしているゲームによって異なります。ユーザーがどのゲームをプレイしているかがわかっているので、99%の確率でこれは問題になりません。しかし、私がこれを知らない(そして知らない)場合があります。
私の質問は、実行時に正しいメタデータタイプを決定または指定する方法はありますか?
たとえば、メタデータ値がKlondikeMetadata型であることを示すプロパティをGameState構造体に追加し、それを使用してメタデータをその型にキャストできれば、私は黄金になると思います。これを行う方法はありますか?Cで実行時に型を指定して変数をキャストする方法はありますか?