gpt4 book ai didi

c++ - 为什么我收到错误, ‘struct node’ 需要模板参数?

转载 作者:搜寻专家 更新时间:2023-10-31 01:04:19 24 4
gpt4 key购买 nike

我已经编写了以下代码来实现 C++ 中的链表。但是我在编译它时遇到错误。我认为问题出在模板的使用上。

#include<iostream>
template<class T>
struct node{
T data;
struct node *next;
};

template<class T>
void push(struct node **headRef ,T data){
struct node *temp =(struct node*) malloc(sizeof(struct node));
temp->data=data;
temp->next=*headRef;
*headRef=temp;
}
int main(){
struct node *ll = NULL;
push(&ll,10);
push(&ll,3);
push(&ll,6);
push(&ll,8);
push(&ll,13);
push(&ll,12);
}

错误

MsLL.cpp:9:18: error: template argument required for ‘struct node’
MsLL.cpp: In function ‘void push(int**, T)’:
MsLL.cpp:10:8: error: template argument required for ‘struct node’
MsLL.cpp:10:19: error: invalid type in declaration before ‘=’ token
MsLL.cpp:10:28: error: template argument required for ‘struct node’
MsLL.cpp:10:28: error: template argument required for ‘struct node’
MsLL.cpp:10:21: error: expected primary-expression before ‘struct’
MsLL.cpp:10:21: error: expected ‘)’ before ‘struct’
MsLL.cpp:11:7: error: request for member ‘data’ in ‘temp->’, which is of non-class type ‘int’
MsLL.cpp:12:7: error: request for member ‘next’ in ‘temp->’, which is of non-class type ‘int’
MsLL.cpp: In function ‘int main()’:
MsLL.cpp:16:8: error: template argument required for ‘struct node’
MsLL.cpp:16:17: error: invalid type in declaration before ‘=’ token

最佳答案

struct node *ll = NULL;

无效。您必须使用模板实例化语法。

struct node<int> *ll = NULL;

同样,你必须使用push中的模板参数.

template<class T>
void push(struct node<T> **headRef ,T data){
struct node<T> *temp =(struct node<T>*) malloc(sizeof(struct node<T>));

总体改进建议

  1. 您不需要使用 struct node<T> .您可以只使用 node<T> .
  2. 最好用new而不是 malloc (和 delete 而不是 free )。

类模板可以更新为:

template<class T>
struct node{
T data;
node *next;
};

main ,

node<int> *ll = NULL;

push :

template<class T>
void push(node<T> **headRef ,T data){
node<T> *temp = new node<T>();

关于c++ - 为什么我收到错误, ‘struct node’ 需要模板参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24198176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com