Wie wird ein abgeleitetes Klassenobjekt instanziiert, dessen Basisklasse ctor privat ist?Instanziieren Sie ein abgeleitetes Klassenobjekt, dessen Basisklasse ctor privat ist
Da die abgeleitete Klasse ctor implizit die Basisklasse ctor aufruft (was privat ist), gibt der Compiler einen Fehler aus.
diesen Beispiel-Code Betrachten unter:
#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 der Kompilierung-Fehler gibt:
accessing_private_ctor_in_base_class.cpp: In constructor
derived::derived()': accessing_private_ctor_in_base_class.cpp:9: error:
base::base()' is private accessing_private_ctor_in_base_class.cpp:18: error: within this context
Wie kann ich den Code ändern, die Kompilierung-Fehler zu entfernen?
@ Nawaz: die abgeleitete Klasse zu einem Freund der Basisklasse zu machen, hat funktioniert! –