我无法弄清楚符号,与参考和指针混淆。我必须将学生指针放入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;
}
}
答案 0 :(得分:0)
您的函数PointerClass::add()
和LinkedList::addNode()
期望Student
作为参数,而不是Student*
。您有两种方法可以使其工作:
1)重构PointerClass::add()
和LinkedList::addNode()
以接收和存储Student*
。这基本上等于用&
替换函数参数声明中的*
,并在将其放入新LinkedList::node
时取消引用该指针,或更改类型LinkedList::node::data
至Student*
2)将Student
传递给PointerClass::add()
。这只需要s
声明Student s = Student();
,或者在将其传递给PointerClass::add()
之前取消引用它。