Instanziieren Sie ein Objekt abgeleitete Klasse, deren Basisklasse ctor private

Wie Sie instanziieren ein Objekt abgeleitete Klasse, deren Basisklasse ctor private?

Seit ctor der abgeleiteten Klasse ruft implizit den base class ctor(das ist privat), der compiler-Fehler gibt.

Betrachten Sie das folgende Beispiel-code unten:

#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;
}

Dieser code gibt den Kompilierungsfehler:

accessing_private_ctor_in_base_class.cpp: Im Konstruktor
derived::derived()': accessing_private_ctor_in_base_class.cpp:9:
error:
base::base () " ist privat
accessing_private_ctor_in_base_class.cpp:18: Fehler: in diesem
Kontext

Wie kann ich den code ändern, entfernen Sie den Kompilierungsfehler?

Schreibe einen Kommentar