Old: CRTP 基本クラスを介して仮想関数をオーバーライドするにはどうすればよいですか?
struct I { virtual void foo() = 0; };
template<class D>
struct B { void foo() { } }; // provides implementation of foo in D
struct D : I, B<D> { }; // D has an implementation of foo that should override I
int main() { D d; }
Error: unimplemented pure virtual method 'foo' in 'D'
単純化:派生型で再実装せずに仮想関数をオーバーライドするにはどうすればよいですか? (この質問は仮想関数の定義に反すると思います)。
struct I { virtual void foo() = 0; };
struct B { void foo() { } };
struct D : B, I { };
int main() { D d; }