template und spezialisierungen
-
hallo,
was bringt eigendlich dieses template ???
template <> class Txx<void*> { //... } Txx<void*> p;
rum wie num, ich habe einen pointer der auf irgendwas zeigt.
hat jemand ein beispiel wie ich diesen pointer arbeiten kann, bzw. für was ich
ihn nutzen kann.danke volker
-
Einem void-Pointer kann der Wert jedes anderen Zeigertyps zugewiesen werden.
Ansonsten guck mal hier:
http://www.google.de/search?hl=de&ie=UTF-8&oe=UTF-8&q="C%2B%2B"+%2B"void"+%2B"Zeiger"&meta=
In der FAQ ist das sicherlich auch schon mal erklärt worden.Code-Hacker
-
was bringt eigendlich dieses template ???
Es handelt sich nur um eine konkrete Spezialisierung. So kannst du auf void * anders reagieren, als auf die anderen Typen.
-
und im template-konzept wie überladen, operator ??
-
Ähem... könntest Du die Frage nochmal neu formulieren?
Ich versteh irgendwie nicht was Du damit meinst.
-
Jester schrieb:
Ähem... könntest Du die Frage nochmal neu formulieren?
Ich versteh irgendwie nicht was Du damit meinst.ok, ich versuche es mal so.
Vererbungsstrucktur
class CWinE: public Txx<CWin> { //... }'; class CWinD: public Txx<CWinFrame> //CWinFrame ist abgeleitet von CWin { //... }; //abstrakte klasse template <class BASE> class TAxx: public BASE { public: virtual HRGN GetClipRgn(ClipInfo* pCI=NULL) = 0; virtual bool IsClipRgn() = 0; //... protected: virtual void ReflexMsgFont() {}; }; //mit dem template hänge ich mich zwischen die klassen template <class BASE> class Txx : public TAxx<BASE> { public: HRGN GetClipRgn(ClipInfo* pCI=NULL) { } bool IsClipRgn() { } //... protected: bool m_bCreate; //... };
sinn muß es sein für alle Txx<BASE> einen pointer zu speichern, wobei BASE eigendlich unbestimmt ist, das BASE z.b. CWin oder CWinFrame sein kann.
mit diesem pointer muß ich auf meine member und functionen in Txx<BASE> und abgeleiteten klassen zugreifen können.
Txx<void*>* p; //p ist in dem fall ein gültiger pointer p->m_bCreate; bool b=p->IsClipRgn();
ich denke mit dem -> virtual operator sollte es in einer abgeleiteten klasse gehen.