Создать экземпляр объекта производного класса, ctor базового класса которого является закрытым

Как создать экземпляр объекта производного класса, ctor базового класса которого является закрытым?

Поскольку ctor производного класса неявно вызывает ctor базового класса (который является закрытым), компилятор выдает ошибку.

Рассмотрим следующий пример кода:

#include <iostream>

using namespace std;

class base
{
   private:
      base()
      {
         cout << "base: ctor()\n";
      }
};

class derived: public base
{
   public:
      derived()
      {
         cout << "derived: ctor()\n";
      }
};

int main()
{
   derived d;
}

Этот код выдает ошибку компиляции:

accessing_private_ctor_in_base_class.cpp: В конструкторе производный::производный()': accessing_private_ctor_in_base_class.cpp:9: error:base::base()' является частным accessing_private_ctor_in_base_class.cpp:18: ошибка: внутри этого контекст

Как я могу изменить код, чтобы удалить ошибку компиляции?

13
задан nitin_cherian 24 March 2012 в 12:05
поделиться