C ++ se hereda de varias clases base con el mismo nombre de función virtual

He intentado este código:

class A
{
    virtual void foo() = 0;
};

class B
{
    virtual void foo() = 0;
};

class C : public A, public B
{
    //virtual void A::foo(){}
    //virtual void B::foo(){}

    virtual void A::foo();
    virtual void B::foo();
};

void C::A::foo(){}
void C::B::foo(){}

int main()
{
    C c;
    return 0;
}

Está bien cuando se usa la parte comentada, pero cuando intento escribir las definiciones fuera de la declaración de clase, el compilador informa de errores. Estoy usando el compilador MSVC11, ¿alguien sabe cómo escribir esto? Necesito mover el código en el archivo cpp.

Gracias ~~

Respuestas a la pregunta(3)

Su respuesta a la pregunta