سلام.نیازی به virtual کردن نیست با استفاده از using در بخش private دوباره معرفیش کنید برای مثال:
class Parent{
public:
void foo(){}
};
class Child : public Parent{
public:
private:
using Parent::foo;
};
int main()
{
Child c;
c.foo();//private here
return 0;
}