Dziedzicz interfejsy, które mają wspólną nazwę metody

Istnieją dwie klasy podstawowe o tej samej nazwie funkcji. Chcę je odziedziczyć i przejechać każdą z metod inaczej. Jak mogę to zrobić z oddzielną deklaracją i definicją (zamiast definiować w definicji klasy)?

#include <cstdio>

class Interface1{
public:
    virtual void Name() = 0;
};

class Interface2
{
public:
    virtual void Name() = 0;
};

class RealClass: public Interface1, public Interface2
{
public:
    virtual void Interface1::Name()
    {
        printf("Interface1 OK?\n");
    }
    virtual void Interface2::Name()
    {
        printf("Interface2 OK?\n");
    }
};

int main()
{
    Interface1 *p = new RealClass();
    p->Name();
    Interface2 *q = reinterpret_cast<RealClass*>(p);
    q->Name();
}   

Nie udało mi się przenieść definicji w VC8. Znalazłem specyficzne słowo kluczowe Microsoft __interface, które może wykonać tę pracę pomyślnie, poniżej:

#include <cstdio>

__interface Interface1{
    virtual void Name() = 0;
};

__interface Interface2
{
    virtual void Name() = 0;
};

class RealClass: public Interface1,
                public Interface2
{
public:
    virtual void Interface1::Name();
    virtual void Interface2::Name();
};

void RealClass::Interface1::Name()
{
    printf("Interface1 OK?\n");
}

void RealClass::Interface2::Name()
{
    printf("Interface2 OK?\n");
}

int main()
{
    Interface1 *p = new RealClass();
    p->Name();
    Interface2 *q = reinterpret_cast<RealClass*>(p);
    q->Name();
}  

ale czy jest inny sposób, aby zrobić coś bardziej ogólnego, który będzie działał w innych kompilatorach?

questionAnswers(5)

yourAnswerToTheQuestion