noob здесь все еще экспериментирует с шаблонами. Попытка написать шаблон класса обработки сообщенийШаблон класса внутри класса шаблон в 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_
};
Все определено в файле заголовка. Я построил и протестировал свой класс, и все хорошо. Теперь я пытаюсь сделать это:
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_;
};
Однако эта линия дает мне ошибку плохого выражения типа перед «>» знак.
Я добавил необходимые файлы заголовков, чтобы определить, что такое MessageType. Я использовал эту функцию много раз раньше, просто не в этом контексте.
Я подозреваю, что компилятору не нравится тот факт, что функция шаблона полностью определена (специализирована?) В неопределенном шаблоне класса (неспециализирована?). Я не полностью разбираюсь в том, что делает шаблон «специализированным». Большинство объяснений сосредоточено на понятиях «полный» или «частичный», но не то, что делает его специализированным в первую очередь.
Извините, если вы хотите увидеть больше кода. У меня нет доступа к Интернету на работе, и именно здесь я это делаю, поэтому я должен все вставить в свой «блокнот» и принести его домой.
Почтовый код функции getMessageSender здесь. –
Пища не имеет типа возврата, это ваша проблема –
Вы все правильно в своих наблюдениях. Однако это были опечатки. Фактическая проблема заключалась в отсутствии ключевого слова «шаблон», на который ответил Faisal – user106740