Почему я не могу использовать наследование для реализации интерфейса в 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 #, но я не знаю, связанный с этим механизм (ы) - мне просто любопытно.

Ответы на вопрос(4)

Ваш ответ на вопрос