Problem mit Struktur in Header-Datei
-
Also mein Problem ist folgendes:
Ich habe eine Struktur geschrieben, die 4 Member vom Typ int hat, die die Dimensionen eines Fensters festlegen.
Diese Struktur steht in einem Header-File und benutzen möchte ich sie in einer cpp-Datei, dort wird sie allerdings nicht erkannt und der Compiler fordert immer,
dass links eine Struktur/Union usw. stehen muss, was ja eigentlich der Fall ist.//StdAfx.h //... #include "Declarations.h" #include "CGui.h" //...//Declarations.h typedef struct WINPARAMSA { int xPos; int yPos; int width; int height; }WINPARAMS;//CGui.h //... namespace Interface { //... static WINPARAMS nm_Window; //... static class CGui { //... void Init(); //... } } //...//CGui.cpp //... void Interface::CGui::Init() { //... nm_Window.xPos = 10; //... } //...Ausgespuckt werden dann Fehlermeldungen wie z.B.:
links von .xPos muss sich eine Klasse/Struktur/Union befindenIch habe die Struktur dann mal probehalber direkt in der "CGui.h" deklariert.
Dann hat es funktioniert, jedoch bin ich damit nicht zufrieden, denn ich
beabsichtige die Struktur auch in anderen Headern zu verwenden und die Struktur
jedesmal hin- und her kopieren zu müssen ist sicher nicht Sinn der Sache.Ich hoffe die Frage ist nicht allzu dämlich und natürlich auch, dass mir jemand
möglichst schnell helfen kann.MFG Honky
-
Du hast den Code zu stark zusammengekürzt. Nun zeigt er alle möglichen Fehler, da er gar nicht erst compiliert. Lies dir mal den dritten Link in meiner Signatur aufmerksam durch. Wahrscheinlich ist es bloß eine Unachtsamkeit, wie ein vergessenes Semikolon oder include, aber das lässt sich bei dem was du uns zeigst nicht mehr sagen.
Übrigens sieht mir
typedef struct WINPARAMSA { int xPos; int yPos; int width; int height; }WINPARAMS;doch sehr stark nach C aus (noch dazu schlechtem!). Wo hast du das denn her? Internettutorials? Bücher mit C/C++ im Titel? Leg die lieber was gutes zum Lernen zu, siehe dazu den zweiten Link in meiner Signatur.
-
Wie schreibt man eine Struktur denn dann C++-Konform? Ich kenne eigentlich
nur diese Schreibweise.
-
Z.B. so
struct Bla { int bli; // ... }; Bla blub; // Instanz von BlaDie Variante mit typedef ist, wie man es in C machen würde, da man in C immer den elaborate Type Specifier schreiben muss, also z.B.
struct Bla { // ... }; typedef struct Bla bla_t; Bla blub; // error struct Bla blub; // OK bla_t blab; // OKDurch das typedef kann man sich das in C sparen.
-
Danke für eure Hilfe. Ich habe meinen Fehler gefunden.
Das Problem war, dass ich die Header in der StdAfx.h in der falschen
Reihenfolge includiert habe, d.h. ich habe die CGui.h vor der Declarations.h
eingebunden und es ist ja nur logisch, dass er die WINPARAMS-Strukture dann
nicht kennt.MFG Honky