noob hier noch mit Vorlagen experimentieren. Versuchen, eine Nachrichtenverarbeitungsklassenvorlage zu schreibenTemplate-Klasse innerhalb der Klassenvorlage in C++
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 in einer Header-Datei definiert. Ich habe meine Klasse gebaut und getestet und alles ist gut. Nun, ich versuche, 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_;
};
Doch diese Linie ist mir einen Fehler von schlechten Ausdruck-Typ vor dem ‚>‘ Token.
Ich habe die notwendigen Header-Dateien hinzugefügt, um zu definieren, was ein MessageType ist. Ich habe diese Funktion schon lange benutzt, nur nicht in diesem Zusammenhang.
Ich vermute, dass der Compiler nicht die Tatsache mag, dass die Template-Funktion vollständig (spezialisiert?) Innerhalb einer undefinierten Klassenvorlage (unspezialisiert?) Definiert ist. Ich bin nicht ganz grok, was eine Vorlage "spezialisiert" macht. Die meisten Erklärungen konzentrieren sich auf die Begriffe "voll" oder "partiell", aber nicht auf das, was sie in erster Linie spezialisiert.
Entschuldigung, wenn Sie mehr Code sehen möchten. Ich habe keinen Internetzugang bei der Arbeit und da mache ich das, also muss ich alles in meinen mentalen "Notizblock" legen und nach Hause bringen.
Post getMessageSender Funktionscode hier. –
Essen hat keinen Rückgabetyp, das ist dein Problem –
Sie sind alle in Ihren Beobachtungen korrekt. Das waren jedoch Tippfehler. Das eigentliche Problem war das Fehlen des Schlüsselworts 'Vorlage', wie von Faisal beantwortet – user106740