這引發了分段錯誤。我的LinkedList賦值運算符有什麼問題?
LList<T>& LList<T>::operator=(LList s){
LList<T> final_list;
final_list.head_ = s.head_;
Node<T> *f_curr_node = final_list.head_;
Node<T> *s_curr_node = s.head_;
for (int x=0; x<s.length();x++){
f_curr_node->next_ = s_curr_node->next_;
}
return final_list;
}
我不明白爲什麼這是錯誤/如何解決它。
提供一個[http://stackoverflow.com/help/mcve](http://stackoverflow.com/help/mcve)至少請。 – 2014-12-02 20:59:59
也看到http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope – 2014-12-02 21:00:43
除了明顯的UB在下面的答案解釋,你有什麼使用該賦值運算符定義來實現?任何合理的賦值操作符都會使操作數與源對象保持相同的狀態,那麼爲什麼要在主體中創建新的對象實例,而不是分配當前實例的數據成員?你確定你想製作你分配的源對象的副本嗎? – Praetorian 2014-12-02 21:07:02