Как создать экземпляр объекта производного класса, чей базовый класс 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: в конструкторе
derived::derived()': accessing_private_ctor_in_base_class.cpp:9:
error:
base :: base () 'является приватным
accessing_private_ctor_in_base_class.cpp: 18: ошибка: внутри этого
контекст
Как я могу изменить код, чтобы удалить ошибку компиляции?