プライベート継承の間、パブリックメンバ変数またはBaseクラスのメンバ関数をDerivedのパブリックアクセス指定子に戻すことができます。 しかし、Baseクラスのpublicコンストラクタでも同じことができますか?次のように私はそれを試してみましたコンストラクタをプライベート継承で公開する
、
#include <iostream>
using namespace std;
class base
{
public:
base(){}
void print(){ puts("In print"); }
};
class derived : private base
{
public:
base::print;
base::base; /* Throws an error - Declaration doesnt declare anything*/
void display(){ puts("In display"); }
};
int main()
{
derived dObj;
}
それは は私が有効しようとしています何をされたエラー「何を宣言doesntの宣言」をスロー
?
これは興味深いです。しかし、なぜプライベートとして継承し、パブリックアクセスを提供したいのですか? – tuxuday
C++ 11がないと、基本クラスからコンストラクタを継承することはできません。派生クラスのコンストラクタによって明示的に、または暗黙的に呼び出されます。 'derived'で使用したい' base'の他のメソッドについては、 'using'キーワードが必要です。 –
@tuxuday - 私たちが個人的に継承し、1人または少数のメンバーにのみアクセスできるようにしたいが、基本クラス全体ではアクセスできないようにするために、私はそれを読む。メンバ変数と関数で動作します。私はちょうどコンストラクタにも試みました。 –