+ -
当前位置:首页 → 问答吧 → 请教一下一个问题,关于.h和.cpp的问题

请教一下一个问题,关于.h和.cpp的问题

时间:2011-12-11

来源:互联网

我用的visual studio2010,
有一个简单代码,队列。h中代码为
template<class T>
class SLNode{
public:
T date;
SLNode<T> *next;
SLNode(SLNode* nextNode=NULL);
SLNode(const T &item,SLNode* nextNode=NULL);
};
队列.cpp中代码如下
template<class T>
SLNode<T>::SLNode(SLNode* nextNode=NULL){
next=nextNode;
}
template<class T>
SLNode<T>::SLNode(const T &item,SLNode* nextNode=NULL){
date=item;
next=nextNode;
}
检查时总会出错,请问一下原因
错误 1 error C2143: 语法错误 : 缺少“;”(在“<”的前面) c:\users\dell\documents\visual studio 2010\projects\第一次作业\第一次作业\队列.cpp 2
错误 2 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int c:\users\dell\documents\visual studio 2010\projects\第一次作业\第一次作业\队列.cpp 2
错误 3 error C2988: 不可识别的模板声明/定义 c:\users\dell\documents\visual studio 2010\projects\第一次作业\第一次作业\队列.cpp 2
错误 4 error C2059: 语法错误:“<” c:\users\dell\documents\visual studio 2010\projects\第一次作业\第一次作业\队列.cpp 2
错误 5 error C2143: 语法错误 : 缺少“;”(在“{”的前面) c:\users\dell\documents\visual studio 2010\projects\第一次作业\第一次作业\队列.cpp 6
错误 6 error C2447: “{”: 缺少函数标题(是否是老式的形式表?) c:\users\dell\documents\visual studio 2010\projects\第一次作业\第一次作业\队列.cpp 6

作者: my765089223   发布时间: 2011-12-11

模板的编译比较特殊,把类的声明和实现全部放在cpp文件里即可,然后用到的地方直接#include "XX.cpp",这个方法不是很雅观,你可以搜一下C++模板类的编译方式,还是可以学到不少东西的

作者: yby4769250   发布时间: 2011-12-11

1 你的构造函数的参数错了 SLNode(SLNode* nextNode=NULL);改为 SLNode(SLNode<T>* nextNode=NULL);
后面的类似
2 模板的定义最好和声明放一起 都放在 .h文件中。 不然 就要在使用模板的文件中 包含 .h 和 .cpp

大概是这样。没有帮你编译。

作者: Ethan_Jnu   发布时间: 2011-12-11

模版的声明及定义必须放在同一文件中,这是规定

作者: keiy   发布时间: 2011-12-11