Почему я не могу использовать наследование для реализации интерфейса в C ++? [Дубликат]
Possible Duplicate:
Implementing abstract class members in a parent class
Why does C++ not let baseclasses implement a derived class' inherited interface?
Учитывая эти объекты:
<code>struct A { virtual void foo() = 0; }; struct B { void foo() { /* neat implementation */ } }; </code>
Интересно, почему --compiler-wise-- следующий объект считается абстрактным:
<code>struct C : B, A { using B::foo; // I tried my best to make the compiler happy }; </code>
Компилятор не позволит мне сделать это:
<code>A* a = new C; </code>
Visual Studio 2010 говорит:
'C' : cannot instantiate abstract class due to following members: 'void A::foo(void)' : is abstract : see declaration of 'A::foo'
g ++ 4.6.3 говорит:
cannot allocate an object of abstract type ‘C’ because the following virtual functions are pure within ‘C’: virtual void A::foo()
Я предполагаю, что это разрешено в C #, но я не знаю, связанный с этим механизм (ы) - мне просто любопытно.