【发布时间】:2017-10-23 04:56:22
【问题描述】:
我正在尝试为双链表编写移动构造函数,但它不起作用。有人可以帮我找出我做错了什么吗?
这是我的课:
class SortedList {
struct Node {
T data_;
Node* next_;
Node* prev_;
Node(const T& data = T{}, Node* nx = nullptr, Node* pr = nullptr) {
data_ = data;
next_ = nx;
prev_ = pr;
}
};
Node* front_;
Node* back_;
int sizelist;
}
这是我的移动构造函数:
SortedList<T>::SortedList(SortedList&& rhs) {
if (&rhs != this) {
sizelist = rhs.sizelist;
front_ = rhs.front_;
back_ = rhs.back_;
Node* head = rhs.front_;
Node* headNext =rhs.front_->next_;
for (int i = 0; i < rhs.sizelist-1; i++) {
head = nullptr;
head = headNext;
headNext = headNext->next_;
}
rhs.sizelist = 0;
}
}
【问题讨论】:
-
我建议你在一张纸上画一个链表的实例,然后画出移动赋值应该做什么。
-
用户提供的构造函数必须在类定义中声明;
T没有在SortedList中定义。请贴出真实代码 -
“它不工作”不是一个有用的问题描述。请更具体。
标签: c++ linked-list doubly-linked-list move-constructor