我有一個賦值,我們應該使用父/子類重載操作符,並且我想將父對象轉換爲子對象。所以像船+飛機=水上飛機。將父對象轉換爲C++中的子對象,並使用重載的操作符
一個實施的例子:
seaPlane plane::operator+=(boat rhs)
{
seaPlane temp;
temp.displacement = rhs.displacement;
// etc...
*this = temp;
return *this;
}
我得到兩個錯誤的位置:它說船數據成員不可訪問,並且「沒有合適的用戶定義的轉換......存在」。
知道我將這些對象存儲在異構集合中可能也很有用。
您確定需要重載+ =運算符而不僅僅是+嗎?順便說一句,如果這些車輛有一個共同的基類,那麼你可能能夠使用一個更簡單的容器爲您的收藏。 –
如果我們超負荷+而不是+ =教練要讓我們保持一致。這是此練習的主要目的。另外,我的超載+中出現相同的(第一個)錯誤。此外,異構集合是使用繼承的主要原因之一。 – LoserName
這對你的老師來說似乎是一件非常奇怪的事情,你已經發現了原因。你不能分配給'this'指針,因爲它是一個prvalue,並且不能被分配給(除非賦值被重新定義來做別的事情)。 + =運算符是爲了積累而不是重新定義的,所以這看起來像是它應該做的不好的操作。你能否給我們提供關於要求的更多信息?你應該逐字地發表,所以我們可以幫助解釋它們。 –