受保护的部分:没有匹配的函数来调用

时间:2016-02-01 10:58:38

标签: c++

有人可以告诉我为什么这段代码不起作用?我有:没有匹配函数来调用'Child :: Child()'错误。如何正确地将这个孩子放入受保护的部分? :(

class Child
{
protected:
    int cAge;
public:
    Child(int c)
    {
        this->cAge=c;
    }
};

class Parent
{
protected:
    int pAge;
    Child child;
public:
    Parent(int d)
    {
        this->pAge=d;
    }
};

int main()
{

}

1 个答案:

答案 0 :(得分:3)

与“受保护的部分”无关。您应该使用member initializer list来指定要调用的类Child的构造函数:

class Parent
{
// ...
public:
    Parent(int d) : child(d)
//                ~~~~~~~~~~
    {
        this->pAge=d;
    }
};

否则,将尝试调用Child的默认构造函数(即Child::Child()),但它不存在。