C ++ 11 dziedziczy konstruktory i modyfikatory dostępu

Zakładając następujący układ:

class Base
{
protected:
    Base(P1 p1, P2 p2, P3 p3);

public:
    virtual void SomeMethod() = 0;
}

class Derived : public Base
{
public:
    using Base::Base;

public:
    virtual void SomeMethod() override;
};

Czy powinienem być w stanie określićDerivedkonstruktor jak publiczność tutaj? VC ++ daje następujący błąd:

nie można uzyskać dostępu do chronionego członka zadeklarowanego w klasie „Derived”
kompilator wygenerował tutaj „Derived :: Derived” [wskazuje na używaną bazę :: Linia bazowa]
patrz deklaracja „Derived”

tj. ignoruje modyfikator dostępu powyżej odziedziczonego konstruktora.

Czy to ograniczenie funkcji? To nie ma sensu dlaBase klasa, aby mieć publiczny konstruktor, ponieważ nigdy nie można jej utworzyć bezpośrednio (ze względu na czystą metodę wirtualną).

questionAnswers(1)

yourAnswerToTheQuestion