Why use a string instead of a direct function pointer?