Seite 1 von 1

Zeiger auf Strukturen in einer HashMap

Verfasst: 20.01.2011 22:33
von aaronmueller
Hallo zusammen!

Folgende Situation:
Ich habe eine Struktur:

Code: Alles auswählen

Structure GameMenu
  title.s
  ; [...]
EndStructure
Und eine HashMap mit diesen:

Code: Alles auswählen

NewMap menus.GameMenu()
menus("MAIN_MENU")\title = "My awesome game"
menus("OPTION_MENU")\title = "Options"
Jetzt möchte ich eine Variable/Pointer haben, der auf das aktuelle Menü zeigt. Also auf ein Element der menus-HashMap:

Code: Alles auswählen

current_state.s = "MAIN_MENU"
Global *active_menu.GameMenu = @menus(current_state) ; or something like that ?!? ...
Damit ich dies an einer anderen Stelle aufrufen kann.

Code: Alles auswählen

Debug active_menu\title
Leider funktioniert dies nicht so wie ich mich das vorgestellt habe. (Compiler sagt "The following variable doesn't have a Structure: active_menu") Wie gehe ich hier vor?
Vermutlich habe ich das alles sehr umständlich gemacht, ich würde mich über ein bisschen Code-Review von euch freuen!

Viele Grüße,
Aaron

Re: Zeiger auf Strukturen in einer HashMap

Verfasst: 20.01.2011 22:57
von DrShrek
Versuchs doch mal so:

Code: Alles auswählen

Debug *active_menu\title

Re: Zeiger auf Strukturen in einer HashMap

Verfasst: 20.01.2011 23:14
von aaronmueller
The following variable doesn't have a 'Structure': *active_menu.

Re: Zeiger auf Strukturen in einer HashMap

Verfasst: 20.01.2011 23:56
von STARGÅTE
Du musst natürlich auch dem Pointer eine Strukture geben.

Code: Alles auswählen

Structure GameMenu
  title.s
EndStructure

NewMap menus.GameMenu()
menus("MAIN_MENU")\title = "My awesome game"
menus("OPTION_MENU")\title = "Options"

current_state.s = "MAIN_MENU"
Global *active_menu.GameMenu = @menus(current_state)

Debug *active_menu\title

Re: Zeiger auf Strukturen in einer HashMap

Verfasst: 22.01.2011 02:59
von aaronmueller
STARGÅTE hat geschrieben:Du musst natürlich auch dem Pointer eine Strukture geben.
Ich kann nicht ganz nachvollziehen was du meinst. Dein Codebeispiel gleicht meinem 1:1 o_O

EDIT: Ach herrje, der Fehler lag auf meiner Seite. Der Code hat von Anfang an funktioniert, ich hatte nur meine Includes unglücklich gesetzt, so dass ich an einer Stelle auf den Pointer zugegriffen habe, an dem dieser nicht bekannt ist.

Das Problem hat sich also erledigt :praise: