I would recommend an array of base class pointers. Then if you want to access the derived class function using a base class pointer you simply cast the pointer to the derived class.
If you don't ever have the need, or want to prevent the base class from being instantiated then use a pure virtual function which will make the class abstract.