vererbung bei template parameter
-
hallo zusammen,
ich habe folgendes template:
template <typename T, typename S=ReferenceTimer<T> > class ReferenceTimerQueue : public PairQueue<T, S *> { public: void add(S * timer); }; template <typename T, typename S > void ReferenceTimerQueue<T, S>::add(S * timer){ T ref = timer->getReference(); PairQueue<T, S *>::add(ref, timer); }Wie bekomme ich es hin, dass das Template auch mit Unterklassen von S=ReferenceTimer<T> arbeitet? Im Moment bekomme ich da immer Fehler. Oder übersehe ich da wieder was triviales?
-
-
ok ok, bereichtigte kritik

also meine frage ist, wie kann ich das dargestellte template auch mit subklassen von S verwenden?
ich habe:
template <typename T, typename S=ReferenceTimer<T> > class ReferenceTimerQueue : public PairQueue<T, S *> { public: void add(S * timer); };ich möchte:
template <typename T, typename S=IsAReferenceTimer<T> > class ReferenceTimerQueue : public PairQueue<T, S *> {Geht dies?
gruß
-
Ich bin geneigt zu antworten: probier es aus.
Ich verstehe die Frage nicht.
Was ist hier mit "verwenden" gemeint?
-
sven_ schrieb:
Im Moment bekomme ich da immer Fehler.

Zeig ein Minimalbeispiel, das den Fehler reproduziert.
-
sven_ schrieb:
ok ok, bereichtigte kritik

also meine frage ist, wie kann ich das dargestellte template auch mit subklassen von S verwenden?
template <typename T, typename S=ReferenceTimer<T> > class ReferenceTimerQueue : public PairQueue<T, S *> { public: void add(S * timer); };Solange die Sub-Klassen alle Bedingungen erfüllen musst du gar nichts weiter tun.
Soweit ich dich verstehe willst du nur folgendes sicherstellen:template <typename T, typename S> class ReferenceTimerQueue : public PairQueue<T, S *> { BOOST_STATIC_ASSERT(boost::is_base_of<ReferenceTimer, S>::value) public: void add(S * timer); };
-
hallo jungs,
vielen dank für die hilfe. war doch stark verwirrt, nun tut es aber.
