-1
私が構造を持っている:ポインタからのポインタから変数の値を参照するにはどうすればよいですか?
struct room;
...
/*some more structs */
typedef struct {
int state;
int id;
struct room* north;
struct room* south;
struct room* east;
struct room* west;
creature* creatures[10];
} room;
と内容を表示する関数:
void printContentsOfRoom(room* r) {
printf("\nRoom %d:\n", r->id);
printf("\tState: %s\n", getState(r));
printf("\n\tNeighbors:\n");
if (r->north.id != -1)
printf("\t North: Room %d\n",((room*)r->north)->id);
if (r->east.id != -1)
printf("\t East: Room %d\n",((room*)r->east)->id);
if (r->south.id != -1)
printf("\t South: Room %d\n",((room*)r->south)->id);
if (r->west.id != -1)
printf("\t West: Room %d\n",((room*)r->west)->id);
printf("\n\tCreatures:\n");
for (int i = 0; i < 10; i++) {
creature* c = (creature*)r->creatures[i];
if (c) {
if (c == pc)
printf("\t %s\n",getType(c));
else
printf("\t %s %d\n",getType(c),c->id);
}
}
}
私は部屋IDが-1(設定中に設定されている場合ようにそれを作るしようとしていますプログラムが実行されます)、その部屋に関する情報は表示されません。コンパイル時に、構造体または共用体ではないメンバーの 'id'要求がエラーになります。
さらに、私は、if条件R->ノース - > IDを設定しようとした、それは私はあなたが前進をしたいと思って
'typedef struct {' - > 'typedef struct room {'そして 'r-> north-> id' – BLUEPIXY
あなたが問題を理解していないならば、キャストは使わないでください! – Olaf
'r-> west'はポインタですよね? '.'は構造体と共用体でのみ機能し、ポインタは構造体や共用体ではありません。だから 'r-> west.anything'は無効です。しかし、 ''(* r-> west).anything'や 'r-> west-> anything'を使うことができます。 – immibis