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 |
#if !defined (RC_SINGLETON_H__INCLUDED) #define RC_SINGLETON_H__INCLUDED #if (_MSC_VER > 1000) #pragma once #endif namespace realcay { template <class T> class RCWINDOW_API Singleton { public: inline static T& instance() { static T inst; return inst; } protected: Singleton(); public: Singleton(const Singleton&); Singleton& operator=(const Singleton&); }; }; #endif // RC_SINGLETON_H__INCLUDED |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 |
class base : public realcay::Singleton<base> {}; class derived : public base { public: derived() : m_int(0) {} // wird nicht aufgerufen private: int m_int; }; |
Administrator
derived ...Zitat
Und welcher Konstruktor wird nun nicht aufgerufen?
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <map> #define AE_RENDER 1 #define AE_USER 11 class base : public realcay::Singleton<base> { typedef void (base::*EventHandler)(const void*); private: std::map<std::size_t, EventHandler> m_Hndls; public: void send_message(std::size_t id, const void* data) { std::map<std::size_t, EventHandler>::iterator it = m_Hndls.find(id); if (it != m_Hndls.end()) (*this.*it->second)(data); } void register_message(std::size_t id, EventHandler hdnl) { m_Hndls[id] = hdnl; } }; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 |
class derived : public base { public: derived() : m_int(0) { register_message(AE_RENDER, &derived::on_render); } private: void on_render(const void* data) { std::cout << m_int << std::endl; } private: int m_int; }; |
Alter Hase
Werbeanzeige