Globale Zeigervariable?
-
in meinem Header:
#ifndef APPLICATION_H #define APPLICATION_H #include <memory> class Application { public: Application(); ~Application(); private: }; extern std::unique_ptr<Application> pApp; #endif // APPLICATION_H
in der Main.cpp
#include <windows.h> std::unique_ptr<Application> pApp(nullptr); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hInstance) UNREFERENCED_PARAMETER(hPrevInstance) UNREFERENCED_PARAMETER(lpCmdLine) UNREFERENCED_PARAMETER(nCmdShow) pApp.reset(new Application); ... ... pApp.reset(nullptr); return 0; }
durch den unique_ptr kontrolliere ich die Lebenszeit meines Application-Objekts. Der Unique_ptr wird auf dem static memory erzeugt, noch vor der WinMain, aber in der WinMain erzeuge ich dann das Application-Objekt auf dem Heap. Ist das eine schlaue Möglichkeit ein globales Appliication-Objekt zu erzeugen für a)
SingleThreaded -
b)
Multithreaded - Anwendung.
Wirft der unique_ptr eine Ausnahme...reißts die Anwendungs weg? Ist ein globaler Rohzeiger besser?
MFG
-
Warum verwendest Du dann nicht gleich ein statisch deklariertes Objekt?
Warum sollte der unique_ptr eine Exception werfen?
Wo siehst Du ein Problem im multithreading. Sowohl unique pointer als auch roher pointer als auch statische Instanz wären da OK.