質問Passing variable type as function parameterへの回答に基づいて:
私は次のように書くことができます:
enum {
TYPEA,
TYPEB,
TYPEC,
TYPED
} TYPE;
void foo(TYPE t, void* x){
switch(t){
case TYPEA:
struct A* y = (struct A*)x;
//do something with a member named "next"
break;
case TYPEB:
struct B* y = (struct B*)x;
//do something with a member named "next"
...
}
}
「次の名前のメンバーを持つもの」を複数回書き直さないようにする方法はありますか?
A と B の "next" は、各構造体の同じ相対メモリ位置にないと想定しています。