C ++ 11 herdando construtores e modificadores de acesso
Supondo o seguinte layout:
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;
};
Devo poder especificarDerived
construtor como público aqui? VC ++ fornece o seguinte erro:
não pode acessar o membro protegido declarado na classe 'Derivado'
compilador gerou 'Derived :: Derived' aqui [aponta para a linha Base :: Base em uso]
ver declaração de 'Derivado'
ou seja, está ignorando o modificador de acesso acima do construtor herdado.
Isso é uma limitação do recurso? Não faz sentido para oBase
classe para ter um construtor público, pois nunca pode ser instanciado diretamente (devido ao método virtual puro).