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

时间:2016-01-28 14:36:47

标签: c++ oop

我是C ++的新手,但我之前在PHP和C#(OOP)方面有过编程经验。 我拥有的是:两个类,其中一个类具有另一个类的私有属性。 来源:

class Foo
{
    public:
        Foo(int n)
        {

        }
};

class Bar
{
    private:
        Foo foo;

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

Bar bars[123];

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

  

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

我如何让它运作? 谢谢你的回复。

1 个答案:

答案 0 :(得分:4)

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

class Bar
{
    private:
        Foo foo;

    public:
        Bar() :
            foo(10)
        {}
};

否则,会发生的情况是编译器首先尝试使用默认构造函数初始化this->foo,然后才能进入构造函数体。由于Foo没有,因此无法编译。