【问题标题】:Declaring property in a class that has the type of another one in C++ [duplicate]在具有 C++ 中另一个类型的类中声明属性 [重复]
【发布时间】: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()'

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

【问题讨论】:

    标签: c++ oop


    【解决方案1】:

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

    class Bar
    {
        private:
            Foo foo;
    
        public:
            Bar() :
                foo(10)
            {}
    };
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多