Como substituir as funções virtuais das classes base que têm nomes idênticos em herança múltipla?
Suponha que eu tenha duas classes baseB1
eB2
e uma classeD
que deriva de B1 e B2 da seguinte maneira:
class B1 {
public:
// ...
virtual void foo() final { cout << "Hello, B1\n"; }
};
class B2 {
public:
// ...
virtual void foo() { cout << "Good riddance, B2!\n"; }
};
class D :public B1, public B2 {
// ...
};
Ao projetar a classeD
, Quero substituir a função de membro chamadafoo()
de B2; Contudo,foo()
em B1 está marcadofinal
e me impede de substituirfoo()
em B2. Qual é a melhor abordagem para substituirfoo()
de B2?