c ++基本构造函数左值到参数
c++ base constructor lvalue to parameter
我玩了一下 C++ 中的复合模式和继承。
它不应该是什么特别的东西所以我编码一个组件有一个父作为复合,复合应该从组件派生并使用它的基础class(组件)的构造函数。但后来我收到以下错误:
"Cannot convert lvalue of type 'Composite*' to parameter type 'Composite*'"
稍微研究了一下,发现 lvalues/rvalues 等是什么,但没有找到任何关于 "parameter" 类型的信息。参数类型是右值吗?
是否可以将左值转换为参数类型?
这是我的代码的缩小版本:
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++ 中的复合模式和继承。 它不应该是什么特别的东西所以我编码一个组件有一个父作为复合,复合应该从组件派生并使用它的基础class(组件)的构造函数。但后来我收到以下错误:
"Cannot convert lvalue of type 'Composite*' to parameter type 'Composite*'"
稍微研究了一下,发现 lvalues/rvalues 等是什么,但没有找到任何关于 "parameter" 类型的信息。参数类型是右值吗? 是否可以将左值转换为参数类型?
这是我的代码的缩小版本:
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 */ { }
};