class base
{
public:
    virtual void showbase() {
        // ----------
    }
};
class base1 {
public:
    virtual void showbase1() {
        // -------
    }
};
class derived : public base, public base1
{
    void showbase() {
        // ----  
    }
    void showbase1() {
        // -------
    }
};
int main()
{
    base* p = new derived();
    p->showbase1();
    base1* p1 = new derived();
    p1->showbase();
}
仮想関数についての私の理解によると、コンパイラはそれを実行時 (vtable メカニズム) で処理し、なぜコンパイル時エラーが発生するのかということです。