gpt4 book ai didi

c++ - 使用结构作为私有(private)成员在链接列表类中定义 ListNode

转载 作者:太空宇宙 更新时间:2023-11-04 13:46:09 27 4
gpt4 key购买 nike

我正在尝试使用一个结构作为我的私有(private)成员来实现一个 LinkList 类,但是,当我尝试在 LinkList.ccp 下定义结构 ListNode 时,编译器说指针未定义。错误在高亮的线上

#ifndef LINKLIST_H
#define LINKLIST_H

#include <iostream>
using namespace std;

template <typename T>
class LinkList{
private:
struct ListNode{
T item;
ListNode * next;
};
int size; // the size of the listNodes.
ListNode* _head;

public:
LinkList(); // constructor
void giveup(int n);
bool isEmpty();
int getLength();

ListNode * find(int index);
};

#endif

#include "LinkList.h"

template <typename T>
LinkList<T>::LinkList(){
_head = NULL;
size = 0;
}

template <typename T>
void LinkList<T>::giveup(int n){
cout << "The error " << n << " has occured" << endl;
}

template <typename T>
bool LinkList<T>::isEmpty(){
return (size == 0);
}

template <typename T>
int LinkList<T>::getLength(){
return size;
}

template <typename T>
***ListNode * LinkList<T>::find(int index){ // pointer not defined***
if(index < 1 || index > size){
return NULL;
}
ListNode * currentNode = _head;
for(int pos =2; pos <=index; pos++){
currentNode = currentNode->next;
}
return currentNode;
}

最佳答案

在类外的成员函数定义中,前导返回类型不在类内,因此如果它是嵌套类型,则必须对其进行限定:

template <typename T>
LinkList<T>::ListNode * LinkList<T>::find(int index)
^^^^^^^^^^^^^

参数列表和任何尾随的返回类型都在类的范围内,所以(在 ​​C++11 或更高版本中)你可以这样写

template <typename T>
auto LinkList<T>::find(int index) -> ListNode *

一旦你修复了这个问题,为了使用模板,你需要将函数定义移动到头文件中,如所述here .

关于c++ - 使用结构作为私有(private)成员在链接列表类中定义 ListNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25868955/

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