2

在私有继承期间,基类的公共成员变量或成员函数可以在 Derived 中分配回公共访问说明符。但是我们可以对基类的公共构造函数做同样的事情吗?

我尝试如下,

#include <iostream>

using namespace std;

class base
{
      public:
             base(){}
             void print(){ puts("In print"); }
};

class derived : private base
{
      public:
             base::print;
             base::base;   /* Throws an error - Declaration doesnt declare anything*/
             void display(){ puts("In display"); }
};

int main()
{
    derived dObj;
}

它抛出一个错误“声明没有声明任何东西”我正在尝试有效吗?

4

1 回答 1

2

你可以使用using语法。但这using对基类构造函数没有多大意义。我猜你想初始化你的基类,对吧?你可以这样做:

#include <iostream>

using namespace std;

class base
{
      public:
             base(){}
             void print(){ puts("In print"); }
};

class derived : private base
{
      public:
             using base::print;
             derived() : base() {} // initialize base class
             void display(){ puts("In display"); }
};

int main()
{
    derived dObj;
}
于 2012-05-07T08:44:05.320 回答