Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
模板名称的使用无效'';没有参数列表 我试图用C++中的链表创建简单的堆栈。突然我遇到了(我想)与模板有关的问题。我缺乏这种结构的知识,这就是为什么我试图创造一些东西并用它来学习。 我的问题是节点*top我应该更改什么?有什么想法吗? 我的代码是: #include <iostream> #include <cstdlib> using namespace std; template<typename T> class node { public: T object; node * next; }; node *top = NULL; template<typename T> class Stack{ public: void push(T obj); void pop(); void display(ostream & out) const; }; void Stack :: push(T obj){ node * tempNode = new node; tempNode->object = obj; tempNode->next = top; top = tempNode; } void Stack :: display(ostream & out) const{ if(top == NULL){ cout << "Stack is Empty"<<endl; return; } else{ node *temp = top; while(temp!=NULL){ cout << "Here is your elements :"<<"\n"; cout << temp->object<<endl; temp = temp->next; } cout <<endl; } } void Stack :: pop(){ if (top = NULL){ cout << "List is Empty"<<endl; return; } cout << "Your object: "<<top->object << " is removed"<<endl; top = top->next; } ostream & operator << (ostream & out, const Stack & s){ s.display(out); return out; } #包括 #包括 使用名称空间std; 模板 类节点{ 公众: T对象; 节点*下一步; }; node*top=NULL; 模板 类堆栈{ 公众: 无效推力(T obj); void pop(); 无效显示(ostream&out)常数; }; 无效堆栈::推送(T obj){ node*tempNode=新节点; tempNode->object=obj; tempNode->next=top; top=tempNode; } 无效堆栈::显示(ostream&out)常量{ if(top==NULL){ cout_C++_Templates_Linked List_Stack_Nodes - Fatal编程技术网

模板名称的使用无效'';没有参数列表 我试图用C++中的链表创建简单的堆栈。突然我遇到了(我想)与模板有关的问题。我缺乏这种结构的知识,这就是为什么我试图创造一些东西并用它来学习。 我的问题是节点*top我应该更改什么?有什么想法吗? 我的代码是: #include <iostream> #include <cstdlib> using namespace std; template<typename T> class node { public: T object; node * next; }; node *top = NULL; template<typename T> class Stack{ public: void push(T obj); void pop(); void display(ostream & out) const; }; void Stack :: push(T obj){ node * tempNode = new node; tempNode->object = obj; tempNode->next = top; top = tempNode; } void Stack :: display(ostream & out) const{ if(top == NULL){ cout << "Stack is Empty"<<endl; return; } else{ node *temp = top; while(temp!=NULL){ cout << "Here is your elements :"<<"\n"; cout << temp->object<<endl; temp = temp->next; } cout <<endl; } } void Stack :: pop(){ if (top = NULL){ cout << "List is Empty"<<endl; return; } cout << "Your object: "<<top->object << " is removed"<<endl; top = top->next; } ostream & operator << (ostream & out, const Stack & s){ s.display(out); return out; } #包括 #包括 使用名称空间std; 模板 类节点{ 公众: T对象; 节点*下一步; }; node*top=NULL; 模板 类堆栈{ 公众: 无效推力(T obj); void pop(); 无效显示(ostream&out)常数; }; 无效堆栈::推送(T obj){ node*tempNode=新节点; tempNode->object=obj; tempNode->next=top; top=tempNode; } 无效堆栈::显示(ostream&out)常量{ if(top==NULL){ cout

模板名称的使用无效'';没有参数列表 我试图用C++中的链表创建简单的堆栈。突然我遇到了(我想)与模板有关的问题。我缺乏这种结构的知识,这就是为什么我试图创造一些东西并用它来学习。 我的问题是节点*top我应该更改什么?有什么想法吗? 我的代码是: #include <iostream> #include <cstdlib> using namespace std; template<typename T> class node { public: T object; node * next; }; node *top = NULL; template<typename T> class Stack{ public: void push(T obj); void pop(); void display(ostream & out) const; }; void Stack :: push(T obj){ node * tempNode = new node; tempNode->object = obj; tempNode->next = top; top = tempNode; } void Stack :: display(ostream & out) const{ if(top == NULL){ cout << "Stack is Empty"<<endl; return; } else{ node *temp = top; while(temp!=NULL){ cout << "Here is your elements :"<<"\n"; cout << temp->object<<endl; temp = temp->next; } cout <<endl; } } void Stack :: pop(){ if (top = NULL){ cout << "List is Empty"<<endl; return; } cout << "Your object: "<<top->object << " is removed"<<endl; top = top->next; } ostream & operator << (ostream & out, const Stack & s){ s.display(out); return out; } #包括 #包括 使用名称空间std; 模板 类节点{ 公众: T对象; 节点*下一步; }; node*top=NULL; 模板 类堆栈{ 公众: 无效推力(T obj); void pop(); 无效显示(ostream&out)常数; }; 无效堆栈::推送(T obj){ node*tempNode=新节点; tempNode->object=obj; tempNode->next=top; top=tempNode; } 无效堆栈::显示(ostream&out)常量{ if(top==NULL){ cout,c++,templates,linked-list,stack,nodes,C++,Templates,Linked List,Stack,Nodes,我猜top应该是堆栈的成员而不是全局变量?您还需要指定节点的模板类型: template<typename T> class Stack{ node<T> *top = NULL; public: void push(T obj); void pop(); void display(ostream & out) const; }; 模板 类堆栈{ node*top=NULL; 公众: 无效推力(T obj); void pop(); 无效显示(

我猜
top
应该是
堆栈的成员
而不是全局变量?您还需要指定
节点的模板类型

template<typename T>
class Stack{
  node<T> *top = NULL;

public:
  void push(T obj);
  void pop();
  void display(ostream & out) const;
};
模板
类堆栈{
node*top=NULL;
公众:
无效推力(T obj);
void pop();
无效显示(ostream&out)常数;
};
定义模板化类的方法时,需要为类指定模板类型:

template<typename T>
void Stack<T> :: push(T obj){
模板
无效堆栈::推送(T obj){

您的代码>请在问题中包含编译器错误消息。没有冒犯,但一般不推荐C++语法。模板的猜测语法接近不可能,请包括示例输入和输出(对于预期和当前);显示的任何错误。read

节点
是一个模板,每次使用它时都必须使用
来指定模板参数。在某些情况下(从C++17开始),编译器可以推断模板参数,但只需在任何地方添加
就更容易了。
template<typename T>
ostream & operator << (ostream & out, const Stack<T> & s){
  s.display(out);
  return out;
}