Storing an array pointer in an array!

To start with, I would question your grounds for wanting to use the String class. Perhaps it's necessary to achieve what you're trying to achieve, but perhaps it isn't. The String class is IMO quite dangerous and not wise to use at all if it can possibly be avoided - and I would take quite a lot of convincing that it can't be avoided here. That said, ...

If you want to hold a pointer-to-thing in an array, then the array needs to be declared as an array of pointer-to-thing.

int one;
int two;
int *myArray[] = { &one, &two };

It's not clear that you actually need to use an array of pointers. Are you trying to pass in a set of String objects? If the set of Strings in the set is fixed (although the content of each String may vary) can't you just define an array of String? Maybe what you're trying is sensible and it's just that you've simplified your example so far that the sense is no longer apparent, but it may also be that the solution you're trying to force to work is not actually necessary.

If you're going to pass this array to a function and expect the function to process each element in the array then you will also need to provide some way for the function to know how many elements are in the array. That could be via you knowing and hard-coding the length, or the calling code passing in another argument giving the length, or having some way to determine the length of the array being passed in (sometimes it's appropriate to pass in a null-terminated array of pointers) but one way or another there needs to be some way to know the length.