2

このコードのように

class Try
{
public:
    Try() = default;
    int i = 0;
};

class B1 : private Try
{
public:
    B1() = default;
    using Try::Try();
    using Try::i;
};

class C1 : public B1
{
public:
    Try a; //tell me:'Try' is a private member of 'Try'
    
    void print()
    {std::cout << i << std::endl;}
    //Access to this I is allowed;
};

Try a はローカル オブジェクトであり、C1 の一部ではありません。なぜエラーになるのでしょうか?

プライベート継承の直接基底クラスである限り、その派生クラスに間接基底クラスのオブジェクトを定義することはできないのでしょうか? コンストラクタが使えないからなのか、それとも他の理由なのか。

4

1 に答える 1