Frage zum Code einer (Template)Klasse. MSDN/BaseWindow
-
Hallo,
gleich vorweg möchte ich mich entschuldigen, das der Frage-Titel nicht so aussagekräftig ist.
Ich weiss nur nicht, wie ich es genau nennen soll.
Das Beispiel hat bischen mit der WinAPI zu tun, jedoch bezieht sich
meine Frage auf C++, weshalb ich sie hier poste.Hier geht es zu Code, auf welchen sich meine Frage bezieht: https://msdn.microsoft.com/en-us/library/ff381400%28v=vs.85%29.aspx#basewindow
Es geht Konkret um diesen Teil (mittig auf der Seite):template <class DERIVED_TYPE> class BaseWindow { public: static LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { DERIVED_TYPE *pThis = NULL; if (uMsg == WM_NCCREATE) { CREATESTRUCT* pCreate = (CREATESTRUCT*)lParam; pThis = (DERIVED_TYPE*)pCreate->lpCreateParams; SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)pThis); pThis->m_hwnd = hwnd; } else { pThis = (DERIVED_TYPE*)GetWindowLongPtr(hwnd, GWLP_USERDATA); } if (pThis) { return pThis->HandleMessage(uMsg, wParam, lParam); } else { return DefWindowProc(hwnd, uMsg, wParam, lParam); } } BaseWindow() : m_hwnd(NULL) { }
Es handelt sich um
BaseWindow() : m_hwnd(NULL) { }
Falls ich das richtig verstanden habe, so wird hier die MV m_hwnd einfach auf NULL gesetzt. Dann frage ich mich jedoch, wieso dort BaseWindow() und nicht BaseWindow steht.
Ich vermute, weil es ja ein Template ist, und diese NULL-Zuweisung für alle "Typen" gelten soll und von daher die Klammer leer ist.
Würde mann dies jedoch nicht so schreiben BaseWindow<> ? Ich würde mich freuen, wenn mir da jemand sagen kann,
ob ich schon richtig liege, oder einfach einen Denkfehler habe.Danke schonmal
-
Hä? Das ist ein normaler Konstruktur, die Syntax ist schon richtig. Irgendwie versteh ich überhaupt nicht, worauf du hinauswillst.
-
Verdammt. Ich blinder Vollidiot. Denke die ganze zeit nach, was das sein kann. Hab voll übersehen, das die geschweifte Klammer über
BaseWindow() : m_hwnd(NULL) { }
NICHT die abschließende Klammer der Klasse ist. Tut mir leid, das ich mich so dämlich angestellt habe.