将对象添加到LinkedList C ++中

时间:2018-04-22 19:05:01

标签: c++

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

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

add上看到错误:

  

“Student&”类型的引用(不是const-qualified)无法初始化

上面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;
    }
}

1 个答案:

答案 0 :(得分:0)

您的函数PointerClass::add()LinkedList::addNode()期望Student作为参数,而不是Student*。您有两种方法可以使其工作:

1)重构PointerClass::add()LinkedList::addNode()以接收和存储Student*。这基本上等于用&替换函数参数声明中的*,并在将其放入新LinkedList::node时取消引用该指针,或更改类型LinkedList::node::dataStudent*

2)将Student传递给PointerClass::add()。这只需要s声明Student s = Student();,或者在将其传递给PointerClass::add()之前取消引用它。