Por que o C ++ não permite que as baseclasses implementem a interface herdada de uma classe derivada?
Aqui está o que eu estou falando
<code>// some guy wrote this, used as a Policy with templates struct MyWriter { void write(std::vector<char> const& data) { // ... } }; </code>
Em alguns códigos existentes, as pessoas não utilizavam modelos, mas sim interfaces + eliminação de tipos
<code>class IWriter { public: virtual ~IWriter() {} public: virtual void write(std::vector<char> const& data) = 0; }; </code>
Alguém queria ser utilizável com ambas as abordagens e escreve
<code>class MyOwnClass: private MyWriter, public IWriter { // other stuff }; </code>
MyOwnClass é implementado em termos de MyWriter. Por que as funções de membro herdadas do MyOwnClass não implementam a interface do IWriter automaticamente? Em vez disso, o usuário precisa escrever funções de encaminhamento que não fazem nada além de chamar as versões de classe base, como em
<code>class MyOwnClass: private MyWriter, public IWriter { public: void write(std::vector<char> const& data) { MyWriter::write(data); } }; </code>
Eu sei que em Java quando você tem uma classe que implementa uma interface e deriva de uma classe que tem métodos adequados, essa classe base implementa automaticamente a interface para a classe derivada.
Por que o C ++ não faz isso? Parece uma coisa natural de se ter.