Remember that arrays go from 0 to n-1, not 1 to n.

And yes, you would need a virtual function I suppose to be considered polymorphic. You will need virtual if you ever write, say, Mortal::Place() to do things that Node::Place() can't, or similar.