我如何将 const Class* 转换为 Class*?
How would I convert a const Class* to a Class*?
我正在尝试向链表中插入一些内容,但编译器告诉我无法从 const Student*
转换为 Student*
。
每个节点包含一个 Student *stud
和一个 Node *next
。这是我到目前为止写的函数:
void LinkedList::putAtTail(const Student &student){
Node *p = new Node();
p->stud = &student; //this is where I have trouble
p->next - NULL;
//then insert `p` into the Linked List
}
编译器不想编译这个,给我 error: invalid conversion from ‘const Student*’ to ‘Student*’
。
如何在不更改 putAtTail(const Student &student)
函数参数的情况下解决这个问题?
How would I convert a const Class* to a Class*?
选项 1:
复制一份。
p->stud = new Student(student);
选项 2:
使用const_cast
.
p->stud = const_cast<Student*>(&student);
只有在仔细管理内存时才使用此选项。
我正在尝试向链表中插入一些内容,但编译器告诉我无法从 const Student*
转换为 Student*
。
每个节点包含一个 Student *stud
和一个 Node *next
。这是我到目前为止写的函数:
void LinkedList::putAtTail(const Student &student){
Node *p = new Node();
p->stud = &student; //this is where I have trouble
p->next - NULL;
//then insert `p` into the Linked List
}
编译器不想编译这个,给我 error: invalid conversion from ‘const Student*’ to ‘Student*’
。
如何在不更改 putAtTail(const Student &student)
函数参数的情况下解决这个问题?
How would I convert a const Class* to a Class*?
选项 1:
复制一份。
p->stud = new Student(student);
选项 2:
使用const_cast
.
p->stud = const_cast<Student*>(&student);
只有在仔细管理内存时才使用此选项。