作为这个问题的延伸,我试图让我的移动分配正确。
我有以下代码:
// copy assignment operator
LinkedList<T>& operator= (LinkedList<T> other) noexcept
{
swap(*this, other);
return *this;
}
// move assignment operator
LinkedList<T>& operator= (LinkedList<T>&& other) noexcept
{
swap(*this, other);
return *this;
}
但是当我尝试使用它时,我的代码无法编译。
首先是一些代码:
LinkedList<int> generateLinkedList()
{
LinkedList<int> List;
List.add(123);
return List;
}
int main()
{
LinkedList<int> L;
L = generateLinkedList();
^ get an error here...
我收到以下错误:
main.cpp(24): 错误 C2593: 'operator =' 不明确
linkedlist.h(79):注意:可能是 'LinkedList &LinkedList::operator =(LinkedList &&) noexcept'(指向移动赋值运算符)
linkedlist.h(63): note: or 'LinkedList &LinkedList::operator =(LinkedList) noexcept' (指向复制赋值运算符)
main.cpp(24):注意:在尝试匹配参数列表“(LinkedList,LinkedList)”时
我的移动赋值运算符是错误的,还是我以错误的方式使用它?