Vorlage-Klasse in der Klasse-Vorlage in c++

noob hier noch am Experimentieren mit Vorlagen. Beim schreiben einer Nachricht, die Verarbeitung Klasse Vorlage

template <typename T> class MessageProcessor {

  //constructor, destructor defined
  //Code using t_ and other functions
foo( void ) {

//More code in a perfectly fine method
}
  private:  T *t_

};

Alle definiert in der header-Datei. Ich habe gebaut und getestet meiner Klasse und alles ist gut. Nun, ich bin versucht, dies zu tun:

template <typename T> class MessageProcesor {

  //Same stuff as before

foo(void) {
//Same code as before in foo, but one new line:
  t_->getMessageSender<MessageType>();

}

private: T *t_;
};

Allerdings, diese Zeile gibt mir eine Fehlermeldung von schlechten Ausdruck-Typ, bevor '>' token.

Habe ich die erforderlichen header-Dateien definieren, was ein MessageType ist. Ich habe diese Funktion oft vor, nur nicht in diesem Zusammenhang.

Ich vermute, dass der compiler nicht, wie die Tatsache, dass die template-Funktion ist vollständig definiert (spezialisierte?) innerhalb einer undefinierten Klasse Vorlage (unspezialisierten?). Ich bin nicht voll grokking was macht ein template 'spezialisiert'. Die meisten Erklärungen center auf die Konzepte der 'voll' oder 'teilweise', nicht aber, was macht es spezialisiert in den ersten Platz.

Entschuldige mich, wenn Sie möchten, um zu sehen, mehr code. Ich habe kein internet bei der Arbeit, und das ist, wo ich bin, dies zu tun, so habe ich alles in meine geistige 'scratchpad' - und bringen es nach Hause.

Post getMessageSender Funktion code hier.
Lebensmittel nicht über eine Rückkehr geben, dann ist das dein problem
Sie sind alle richtig in Ihren Beobachtungen. Allerdings waren Tippfehler. Das eigentliche problem war das fehlen der 'template' - Schlüsselwort in der Form beantwortet von Faisal

InformationsquelleAutor user106740 | 2009-07-07

Schreibe einen Kommentar