You can do three things:
1. Unhide the base class method
Add a using
in the Node
declaration:
using Bound::rebound;
void rebound() { rebound(left, right); }
2. Explicitly refer to the base class method
Use the Bound namespace:
void rebound() { Bound::rebound(left, right); }
3. Define/redefine all overloads in the derived class
Delegate the implementation to the base class (if this is done in the header, there shouldn't be any penalty thanks to inlining):
void rebound(const Bound *a, const Bound *b) { Bound::rebound(a, b); };
void rebound() { rebound(left, right); }
More info: http://www.parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.9