将对象添加到LinkedList C 中

Adding object into LinkedList C++

本文关键字:LinkedList 对象 添加      更新时间:2023-10-16

我无法弄清楚符号,与参考和指针混淆。我必须将学生指针放入LinkedList。我想我只是错了&或者 *。我在这里做什么:

int main(){
PointerClass *p = new PointerClass();
Student *s = new Student();
p->add(s);
return 0;
}

add上,我看到错误:

"学生&"类型的参考(不合格(不能初始化

add上方定义为此

void PointerClass::add(Student& a) {
    ll.AddNode(a);
}

其中 ll是:

private:
    LinkedList ll;

类LinkedList具有以下结构:

class LinkedList
{
private:
    typedef struct node {
        Student data;
        node* next;
    }* nodePtr;

    nodePtr head;
    nodePtr curr;
    nodePtr temp;
}
void LinkedList::AddNode(Student& addData) {
    nodePtr n = new node;
    n->next = NULL;
    n->data = addData;
    if (head != NULL) {
        curr = head;
        while (curr->next != NULL) {
            curr = curr->next;
        }
        curr->next = n;
    }
    else {
        head = n;
    }
}

您的功能PointerClass::add()LinkedList::addNode()期望Student作为参数,而不是Student*。您有两个可以使其起作用的选择:

1(重构PointerClass::add()LinkedList::addNode()接收和存储Student*。这基本上将等同于用* s替换& s,并在将指针放入新的LinkedList::node时删除该指针,或者将LinkedList::node::data的类型更改为Student*

2(将Student传递给PointerClass::add()。这只是将sStudent s = Student();之类的内容宣布或将其传递给PointerClass::add()