novato aquí todavía experimentando con plantillas. Intentando escribir un mensaje plantilla de clase de procesamientoClase de plantilla dentro de la plantilla de clase en 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_
};
Todo definido en un archivo de encabezado. He construido y probado mi clase y todo está bien. Ahora, estoy tratando de hacer esto:
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_;
};
Sin embargo, esta línea me da un error del mal de tipo expresión antes símbolo '>'.
He agregado los archivos de cabecera necesarios para definir qué es un tipo de mensaje. He usado esta función muchas veces antes, solo que no en este contexto.
Sospecho que al compilador no le gusta el hecho de que la función de la plantilla esté completamente definida (¿especializada?) Dentro de una plantilla de clase indefinida (¿no especializada?). No estoy completando lo que hace que una plantilla sea 'especializada'. La mayoría de las explicaciones se centran en los conceptos de "completo" o "parcial", pero no lo que lo especializa en primer lugar.
Disculpa, si quieres ver más código. No tengo acceso a Internet en el trabajo y ahí es donde estoy haciendo esto, así que tengo que poner todo en mi 'scratchpad' mental y llevarlo a casa.
Publique el código de la función getMessageSender aquí. –
comida no tiene un tipo de devolución, ese es su problema –
Usted es todo correcto en sus observaciones. Sin embargo, esos fueron errores tipográficos. El problema real era la falta de la palabra clave 'plantilla' como respondida por Faisal – user106740