Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
//Klassendeklaration von Win #include "blocker.h" #pragma once #ifndef Win class Win:public uf::Singleton<Win>, uf::Logable, Ogre::FrameListener { private: std::fstream mConfigFile; //Konfigurationsdatei //Thread HANDLE mThread; //Handle des threads bool mExitThread; //soll der Thread schnellstmöglich verlassen werden bool mThreadRunning; //läuft der Thread? //Angaben zum Fenster int mWidth; int mHeight; bool mFullscreen; int mColorDepth; int mFSAA; //AntiAlising //Windows HWND mWin; //handle des Fensters public: //Zeiger zum schnellen Zugriff static uf::Logfile* Log; //konstruktor und Destruktor Win() {} uf::Result Init(HINSTANCE hInst); ~Win(); //Windows-funktionen //Nachrichtenschleife static LRESULT CALLBACK WindowProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam); //Fenster-Rückruffunktion => Steuerung! //Hilfsfunktionen std::string ConfigSearchEntry(std::string Name); //Sucht Eintrag in der Konfigurationsdatei }; uf::Logfile* Win::Log = uf::Logfile::Instance(); #endif |
Zitat von »"David_pb"«
Wo tritt denn der Fehler auf?
Quellcode |
|
1 2 |
1>c:\c++\blocker\win.h(7) : error C2011: 'Win': 'class' Typneudefinition 1> c:\c++\blocker\win.h(7): Siehe Deklaration von 'Win' |
Zitat von »"Genion"«
Öhm... hat zwar nicht direkt was mitm problem zu tun, aber: seh nur ich das so oder ist das #ifndef unterm #pragma once eher sinnlos? solange Win nicht defined wird ists eher sinnlos darauf zu prüfen (und ich würd den includeguard auch vor die includes setzen)
öhm... ich denke nicht aber #pragma müsste eigentlich auch funktionieren, wenns nicht am anfang steht... aber irgendwie glaube ich dennoch, dass du den header mehrfach einbindest (sieht halt so aus )Zitat von »"PCShadow"«
Zitat von »"Genion"«
Öhm... hat zwar nicht direkt was mitm problem zu tun, aber: seh nur ich das so oder ist das #ifndef unterm #pragma once eher sinnlos? solange Win nicht defined wird ists eher sinnlos darauf zu prüfen (und ich würd den includeguard auch vor die includes setzen)
naja, wo der sich über eine Neudefinition beschwerte, dachte ich, die Datei wäre irgendwo mehrfach eingebunden, also hab ich n Pragma once reingesetzt, als das nichts gebracht hat noch das #ifndef.
Was die Postition des #ifndef angeht: du hast Recht :oops:
Was das funktionieren des #ifndef angeht: ich wollte eigentlich prüfen, ob der Bezeichner (->die Klasse ) 'Win' definiert ist - geht das so nicht?
Zitat von »"Genion"«
öhm... ich denke nicht aber #pragma müsste eigentlich auch funktionieren, wenns nicht am anfang steht... aber irgendwie glaube ich dennoch, dass du den header mehrfach einbindest (sieht halt so aus )
kannst ja mal alles durchschauen ob irgendwo die möglichkeit besteht
C-/C++-Quelltext |
|
1 2 3 |
Win::Instance()->WindowProc //ich weiß allerdings nicht mehr, was der Fehler war, nur das der VC vorschlug, ich sollte '&' verwenden, um einen Zeiger zu erhalten &Win::Instance()->WindowProc //VC: "konvertierung von LRESULT (__stdcall) (Win*)(HWND,UINT,LPARAM,WPARAM) nach WNDPROC nicht möglich" &(Win::Instance()->WindowProc) //VC: "1>c:\c++\blocker\blocker.cpp(7) : error C2276: '&': Ungültige Operation auf Ausdruck einer gebundenen Memberfunktion" |
Zitat von »"David_pb"«
C-/C++-Quelltext
1 &Win::WindowProc
Werbeanzeige