下のプログラムの※1の部分で仮想関数のfoo()を呼び出して欲しいのですが、
B::foo(int)の呼び出しと見做されコンパイルが通りません。
何か、かっちょいい解決方法はないでしょうか?

#include <iostream>

class A {
public:
virtual void foo() { std::cout << "foo" << std::endl; }
};

class B : public A {
public:
void foo(int a) {}
};

int main()
{
B b;
b.foo(); //※1
return 0;
}