Autsch!
Hallo Christof,
Du hast Dein Problem eigentlich schon erkannt.
Wenn die Definition des Arrays in der Headerdatei steht, wird überall dort, wo Du Workspace.h einbindest, eine lokale Kopie erzeugt. Der Precompiler fügt den Text aus der.h-Datei wörtlich ein, anschließend übersezt der Compiler alles. Der Compiler sieht dann aber nicht mehr, dass beide Male die Datei Workspace.h eingebunden wurde, sondern nur, dass jedesmal
Record Workspace[0x400];
dasteht. Also erzeugt er jedesmal ein neues Objekt.
Damit schreibst Du die Daten in ein Array und versuchst, sie dann in einem anderen wiederzufinden.
Böse Falle.
Vorschlag:
Eine Datei ‚Workspace.cpp‘ hinzufügen, dort die Zeile
Record Workspace[0x400];
hineinschreiben (und am besten auch gleich noch die Implementierung der Klasse).
In die Datei Workspace.h kommt stattdessen die Zeile
extern Record Workspace[];
Damit ‚weiß‘ der Compiler, dass er das Objekt nicht anlegen soll, sondern dass es das Objekt schon irgendwo gibt. Wo das Objekt dann tatsächlich zu finden ist (nämlich in Workspace.cpp) findet der Linker heraus.
Gruß,
Ralf