基本クラス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;
}
このコードでは、コンパイル エラーが発生します。
access_private_ctor_in_base_class.cpp: コンストラクター
derived::derived()': accessing_private_ctor_in_base_class.cpp:9: error:
では base::base()' はプライベートです access_private_ctor_in_base_class.cpp:18: エラー: このコンテキスト内
コードを変更してコンパイル エラーを取り除くにはどうすればよいですか?