我在C++中使用了複合模式和繼承。 它不應該是特別的東西,所以我編碼組件有父母作爲複合材料,複合材料應該從組件詮釋和使用它的基類(組件)的構造函數。但後來我得到了以下錯誤:C++的基礎構造函數左值參數
"Cannot convert lvalue of type 'Composite*' to parameter type 'Composite*'"
研究之了一下,發現了什麼左值/右值等都是,但沒有找到有關「參數」式的東西。參數類型是右值嗎? 是否可以將左值轉換爲參數類型?
這裏是我的代碼作爲一個較小的版本:
class Component {
private:
Composite* parent;
public:
Component(Composite* parent) {
this->parent = parent;
}
};
class Composite : public Component {
public:
Composite(Composite* parent) : Component(parent) /* <-- Error */ { }
};
修復了前向聲明並添加了缺少的分號之後,所顯示的代碼按原樣編譯得很好。顯示的代碼沒有問題。顯然,這個幻想代碼不是提供真正代碼的[mcve],而是這個幻想代碼。失敗。 –
修復了分號並嘗試了代碼......但仍然出現錯誤 – TreCore
「修復前向聲明」的哪部分原本不瞭解? –