How do you make a Class variable array bigger?
I want to [...] allow the user to program as many outputs as they want


This may be problematic. The microcontroller has a limited amount of
RAM: it will not be able to store arbitrarily long macros. You should
consider a way of telling the user “sorry, no more memory”. Or you can
be optimistic and assume the user will never try to record macros long
enough to exhaust the memory... and let the firmware crash if this
assumption turns out to be invalid.


  I currently use the String class and decode within the program but
  it's cpu intensive and not very practical.


CPU intensive? You mean the allocation? Reading the contents of a String
object is not CPU intensive. And what do you find impractical in the
String class? At it's core, it's just a dynamically sized container for
character data, which seems to be exactly what you are looking for.


  I haven't found any way to expand the size of an array inside a class.


A class is a data structure of fixed size. There is no way you can
expand its contents. If you need something of variable size, you will
have to use dynamic allocation. You will then only store a pointer to
the allocated memory in your class. This is exactly what String does.
The only other option is to store an array of fixed size within the
class, and make that size large enough so that you never need more.