我在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
“修复前向声明”的哪部分原本不了解? –