You're missing one piece of the puzzle
from Steve Heller (email@example.com)
You're missing one function, namely UndatedStockItem::Reorder, which is what will be
called by the StockItem::Reorder function, because the member variable pointed to by the
m_Worker pointer in a DatedStockItem object is an UndatedStockItem. The UndatedStockItem
Reorder function does NOT call StockItem::Reorder, so an infinite regress is avoided.