移動代入演算子に何が間違っているのかわかりません。ここに関数があります。移動代入演算子C++
virtual LinkedList<T> &operator=(LinkedList<T> &&other)
{
cout << " [x] Move *assignment* operator called. " << endl;
// Delete our own elements
ListNode<T> *temp1 = _front;
while (temp1 != nullptr)
{
ListNode<T> *n = temp1->getNext();
delete temp1;
temp1 = n;
}
// Grab other data for ourselves
ListNode<T> *temp2 = other._front;
while (temp2 != nullptr)
{
addElement(temp2->getValue());
temp2 = temp2->getNext();
}
// Reset their pointers to nullptr
other._front = nullptr;
other._end = nullptr;
other._size = 0;
other._last_accessed_index = 0;
other._last_accessed_node = nullptr;
return *this;
}
テストコード - これは私の先生のテストです)私は、テストを実行したとき、私はランダムな負の数を取得するので、私は、データを正しくつかむいないと思うと、」あなたがしているプログラムが動作を停止しましたコード - 。
// Use move *assignment* operator
cout << " [x] Test #5: Move *assignment* constructor behavior" << endl;
moved1 = LinkedList<int>{ 6, 7, 8, 9, 10 };
cout << " [x] Result:" << endl;
cout << " [x] Expected:\t6 7 8 9 10" << endl;
cout << " [x] Actual:\t\t";
for (int i = 0; i < moved1.getSize(); i++)
{
cout << moved1.getElementAt(i) << " ";
}
cout << endl << endl;
これが移動し、移動代入演算子を扱う初めてです感謝:)
コードをステップ実行したときにデバッガに表示される内容は何ですか? –
それはすべて実行されますが、テストコードを実行すると、リスト内のデータを受信しようとすると壊れます@KenWhite –
テストコードを投稿できますか?問題の最も小さなサブセットを投稿できますか? – norlesh