C ++ herda de várias classes base com o mesmo nome de função virtual

Eu tentei 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á OK ao usar a parte comentada, mas quando tento escrever as definições fora da declaração de classe, o compilador reporta erros. Eu estou usando o compilador MSVC11, alguém sabe como escrever isso? Eu preciso mover o código para o arquivo cpp.

Obrigado ~~

questionAnswers(3)

yourAnswerToTheQuestion