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.

questionAnswers(5)

yourAnswerToTheQuestion