这里的菜鸟仍在尝试使用模板。试图写一个消息处理类模板
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 是什么。我以前用过这个函数很多次,只是没有在这个上下文中。
我怀疑编译器不喜欢模板函数在未定义的类模板(未专门化?)中完全定义(专门化?)的事实。我并没有完全理解是什么让模板“专业化”。大多数解释都集中在“完整”或“部分”的概念上,而不是首先使其专业化的原因。
抱歉,如果您想查看更多代码。我在工作中没有互联网接入,这就是我做这件事的地方,所以我必须把所有东西都放在我的心理“便签本”中,然后把它带回家。