【发布时间】:2010-11-08 14:46:25
【问题描述】:
这里的菜鸟仍在尝试使用模板。正在尝试写一个消息处理类模板
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 回答的“模板”关键字
标签: c++ templates specialization class-template