C ++的基础构造函数左值参数(c++ base constructor lvalue to parameter)

编程入门 行业动态 更新时间:2024-10-18 10:34:48
C ++的基础构造函数左值参数(c++ base constructor lvalue to parameter)

我在c ++中使用了复合模式和继承。 它不应该是一些特殊的东西,所以我编写了一个组件作为组合的父级,组合应该从组件诠释,并使用它的基类(组件)的构造函数。 但后来我得到以下错误:

“不能将'Composite *'类型的左值转换为参数类型'Composite *'”

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

这是我的代码作为一个更小的版本:

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

I played a bit around with composite-patterns and inheritance in c++. It shouldn't be something special so i coded that a component has a parent as composite, the composite should derrived from component and use the constructor from it's base class (Component). But then i got following error:

"Cannot convert lvalue of type 'Composite*' to parameter type 'Composite*'"

Researched a bit and found out what lvalues/rvalues etc. are but didn't find anything about a "parameter" type. Is a parameter type a rvalue? Is it possible to convert a lvalue to a parameter type?

Here is my code as a smaller version:

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 */ { } };

Comments in corrected code.

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 */ { } };

更多推荐

本文发布于:2023-04-28 04:54:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1330325.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   参数   基础   base   lvalue

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!