Come creare un'istanza di un oggetto di classe derivato, il cui classctor di base è privato?Istanzia un oggetto di classe derivata, il cui classctor di classe base è privato
Poiché il ctor della classe derivata richiama implicitamente il ctor della classe base (che è privato), il compilatore restituisce un errore.
Considerate questo codice di esempio riportato di seguito:
#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;
}
Questo codice dà l'errore di compilazione:
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
Come posso modificare il codice per rimuovere l'errore di compilazione?
@ Nawaz: rendendo la classe derivata un amico della classe base ha funzionato! –