无效使用没有参数列表的模板名称“节点”

时间:2018-04-19 22:53:11

标签: c++ class

node.h

#ifndef node_h
#define node_h
using namespace std;
template<class Type> 
struct node { 
    node (Type v) : next(nullptr),data(v){}
    Type data; 
    node *next;

    }; 

#endif 

prioqueueS.cpp

#ifndef prioqueueS
#define prioqueueS 
#include "node.h"  
using namespace std;    
template <class type> 
class PrioQueueS { 
private: 
   node *head; 
   node *tail; 
};
#endif 

这当然不是我所有的prioqueue课程,但它是我遇到问题的部分,我已经环顾了她一个明确的答案,但没有找到它。这是我的错误消息:

error: invalid use of template-name 'node' without an argument list
node *head;

如果有人能指出我正确的方向来解决这个非常值得赞赏的问题。

编辑:我意识到我忘记了

node<Type> head; 

所以我可能会删除这个

1 个答案:

答案 0 :(得分:1)

node是模板类型。要声明node变量(甚至只是指向一个变量的指针),您需要为模板参数指定一个值。但是你没有这样做,所以这就是编译器所抱怨的:

#ifndef prioqueueS
#define prioqueueS 

#include "node.h"  
using namespace std;    

template <class type> 
class PrioQueueS { 
private: 
   node *head; // <-- here
   node *tail; // <-- here
};

#endif 

请改为尝试:

#ifndef prioqueueS
#define prioqueueS 

#include "node.h"  
using namespace std;    

template <class type> 
class PrioQueueS { 
private: 
   node<type> *head; // <-- here
   node<type> *tail; // <-- here
};

#endif