我有以下實際工作來完成學習C++,我一直花費很長時間尋找答案並閱讀我的所有工作,但我有點困惑,我可以澄清我在哪裏我錯在這裏。代碼如下所示:指針混淆C++
SafeArray& SafeArray::operator =(const SafeArray& other) {
//Add code here
return *this;
}
我們必須實現將一個數組分配給另一個數組的代碼。現在,如果我正確理解該代碼,該方法需要一個名爲其他的常量「SafeArray」的形式參數。 SafeArray之後的&意味着實際的數組本身被傳遞,而不是一個副本,而const意味着它不能被改變。同樣,該方法返回實際的數組本身,而不是它的副本。
因此,我想認爲這將是一個簡單的情況下創建一個指針,引用「其他」的內存位置,然後返回去引用的結果。在我試圖實際編寫這個想法時,我沒有運氣。
我試圖做類似下面的東西:
SafeArray* ptr = &other; //This should have created a SafeArray pointer to the memory location of the array "other".
這裏的問題是,我得到的錯誤:
main.cpp:31:23: error: invalid conversion from ‘const SafeArray*’ to ‘SafeArray*’ [-fpermissive]
我想這樣做的原因是,我想的東西轉換我不允許改變我能做的事情。
我可以寫這樣的代碼:
const SafeArray* = &other;
但我不能返回值正確要麼。我在理論上顯然誤解了一些理論上的假設,有人可以解釋我錯過了什麼。我非常樂意自己編寫代碼,但我無法完全掌握此方法調用。
你大概應該做一個'other'到'this'的深層副本。 – chris 2013-04-09 03:50:11
因爲其他是'const',所以在分配給它之前,你需要製作它的副本。 – Patashu 2013-04-09 03:50:17