C++ 基构造函数左值到参数

c++ base constructor lvalue to parameter

本文关键字:参数 构造函数 C++      更新时间:2023-10-16

我在 c++ 中玩了一下复合模式和继承。它不应该是什么特别的东西,所以我编码了一个组件有一个父组件作为复合,复合应该派生自组件并使用来自它的基类(组件(的构造函数。但是后来我得到了以下错误:

"无法将类型'复合*'的左值转换为参数类型'复合*'">

研究了一下,找出了什么是左值/右值等,但没有找到有关"参数"类型的任何内容。参数类型是右值吗? 是否可以将左值转换为参数类型?

这是我的代码作为较小版本:

class Component {
private:
  Composite* parent;
public:
  Component(Composite* parent) {
    this->parent = parent;
  }
};
class Composite : public Component {
public:
  Composite(Composite* parent) : Component(parent) /* <-- Error */ { }
};

更正代码中的注释。

class Composite;  // <- _declare_ the idea of a Composite class here
class Component {
private:
    Composite* parent;
public:
    Component(Composite* parent) {
        this->parent = parent;
    }
};
class Composite               // <- _define_ it here
        : public Component {
public:
    Composite(Composite* parent) : Component(parent) /* <-- no error */ { }
};