gpt4 book ai didi

c++ - 使用模板在类(双向链表)中定义结构

转载 作者:行者123 更新时间:2023-11-30 02:28:14 27 4
gpt4 key购买 nike

我已经为这个类实现了每个方法,但我正在努力解决最后一个错误。我得到了在类链表的私有(private)部分中定义 Node 结构的说明。我收到如下错误:

“错误:节点不是类模板”

“错误:非模板类型‘节点’用作模板”

如果我重新安排事物并将 Node 结构完全放在类之外,我的代码就可以工作,但这并不是我正在寻找的真正解决方案。

#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;

typedef int element_type;

template<class element_type>
class linkedlist
{
private:

struct Node<element_type>{
Node<element_type>* next;
Node<element_type>* prev;
element_type data;
};
Node<element_type>* head;
Node<element_type>* tail;
unsigned int size;

public:

linkedlist();
~linkedlist();
void push_back(const element_type& z);
void push_front(const element_type& z); //add front
void print() const;

// will initialize list with n nodes
explicit linkedlist(unsigned int n);
};

最佳答案

TL;DR 版本是在 Node 上删除模板语法:

struct Node{
Node* next;
Node* prev;
element_type data;
};
Node* head;
Node* tail;

因为 Node 是在类模板内部定义的,所以它已经可以访问 element_type 类型。编译器错误只是告诉您在声明本身不是模板的结构时不能使用模板语法。

关于c++ - 使用模板在类(双向链表)中定义结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40965334/

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