One new feature of LV8.5 was the ability to automatically create accessors for private class data, saving you time for a normally tedious task.
And if you implement a Singleton pattern along the lines of the Discussion Forum post I mentioned, adding data accessors is no more difficult for the by reference case than it is for the by value case.
Are all the arrays in your cluster the same type? If so, you could make your data a little more dynamic to facilitate on flexible accessor VI instead of one for each array. For instance, instead of a cluster of four arrays, you could have one 2D array, where each row represents one of the arrays. Then your accessor takes in the array index to get, and retrieves that row from the 2D array.
The downside there is that all of the rows have to be the same length, so the shorter arrays will get padded. To get around that, you could have an extra array in your private data that denotes length, with one element for each row. Then you take a subset of the array when passing it out. Or you could have a 1D array of clusters that contain one array in them. Then the arrays in the clusters don't have to be the same length as each other. This is a common way to handle this situation in LabVIEW in general.
Jarrod S.
National Instruments