class A{
virtual foo(const char *name);
virtual foo(const unsigned int num);
}

class B:public A{
foo(const char *name);
foo(const unsigned int num);
}

class C:public B{
foo(const char *name);
foo(const unsigned int num);
}

と書くと、class Cでのオーバーロードが解決できないと言われてしまいます。
もしかして根本的に勘違いしてるのでしょうか?