在具有 C++ 中另一个类型的类中声明属性 [重复]

Posted

技术标签:

【中文标题】在具有 C++ 中另一个类型的类中声明属性 [重复]【英文标题】:Declaring property in a class that has the type of another one in C++ [duplicate] 【发布时间】:2016-01-28 14:36:47 【问题描述】:

我是 C++ 新手,但我以前有 php 和 C# (OOP) 的编程经验。 我所拥有的是:两个类,其中一个具有与另一个类的类型相同的私有属性。 来源:

class Foo

    public:
        Foo(int n)
        

        
;

class Bar

    private:
        Foo foo;

    public:
        Bar()
        
            this->foo = Foo(10);
        
;

Bar bars[123];

我正在尝试使用Bar 中的构造函数声明Foo 的属性。不幸的是,我这样做的方式不起作用。它给出了一系列错误,例如

没有匹配的函数调用 'Foo::Foo()'

如何让它工作? 感谢您的回复。

【问题讨论】:

【参考方案1】:

您需要在member initialization list 中正确初始化Foo,如下所示:

class Bar

    private:
        Foo foo;

    public:
        Bar() :
            foo(10)
        
;

否则,编译器会首先尝试使用默认构造函数初始化this->foo,然后再进入构造函数的主体。由于Foo没有,所以编译失败。

【讨论】:

以上是关于在具有 C++ 中另一个类型的类中声明属性 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

C++ 继承:我必须在派生类中重复父属性吗?

具有相同名称的函数的类中的多重继承[重复]

C++ 与类中的成员相同的类

在 C++ 类中声明缓冲区大小:BUFFER_SIZE 不是类型

c++中另一个类中的模板类实例化

在 ES6 类中具有私有属性和方法 [重复]