创建模板类时"name followed by '::' must be a class or namespace name"错误



Node.cpp code:

#include "Node.h"
using namespace std;
template <typename t> 
Node :: Node(t nodeDate){
data = nodeData;
}
Node.h代码:
#ifndef NODE_H
#define NODE_H
using namespace std;
template <typename t>
class Node{
public:
Node(t nodeData);

private:
Node *nextNode;
type data;
friend class LinkedList;

};
#endif

Node:: Node(t nodeDate)在cpp类中给出一个"名称,后面跟着'::'必须是类或命名空间的名称"我不知道为什么,因为我有include语句

构造函数Node是类模板Node<t>的数据成员。所以你需要写

template <typename t> 
Node<t> :: Node(t nodeDate){
data = nodeData;
}

需要初始化数据成员nextNode

最好将构造函数形参声明为
Node( const t &nodeData);

构造函数定义如下

template <typename t> 
Node<t> :: Node( const t &nodeDate) : data( nodeData ), nextNode( nullptr )
{
}

也把构造函数定义放在头文件中。

不清楚type在这个数据成员声明中使用的名称

type data;

的意思。你是说

t data;

如果类Node是类LinkedList的内部类,那就更好了。

相关内容

  • 没有找到相关文章

最新更新