C++ 基构造函数左值到参数
c++ base constructor lvalue to parameter
我在 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 */ { }
};
相关文章:
- C++:使用运算符 = 调用多参数构造函数
- 通过零参数构造函数创建的 glm::mat4 应该包含哪些值?
- 好奇的混合与可变参数构造函数
- 具有默认值的单个参数构造函数是否与默认构造函数相同?
- 为什么我们需要创建一个单参数构造函数来使用临时的无名称对象
- 在可变参数构造函数中初始化常量数组
- C++ 显式多参数构造函数歧义
- 零一参数构造函数
- 可变参数构造函数中的 SFINAE
- 当没有显式关键字与单参数构造函数一起使用时,编译器可以发出警告
- 可变参数类模板和可变参数构造函数
- 确保模板参数类型与其可变参数构造函数的类型匹配
- C++默认参数构造函数与内联初始化优先级
- 如何在 c++ 中将包含复制构造函数的类的参数构造函数称为私有?
- 自动存储中没有无参数构造函数的类对象和异常
- 警告:用两个参数构造函数返回对象时,表达结果未使用
- 如何在C++中调用无参数构造函数
- 在 c++ 中具有多个参数构造函数的模板类存在问题
- 可变参数构造函数优先于用户提供的移动构造函数,除非默认
- 如何从可变参数构造函数参数构造任何对象?