Non conosco il C++ in modo approfondito, ma sospetto che non sia corretto utilizzare le classi in quel modo.

Il vettore che hai dichiarato è un array di riferimenti a oggetti (istanze) della classe che devono essere create; inoltre, una volta create, non credo sia possibile scriverle direttamente sul file in quel modo, poichè generalmente una classe contiene anche elementi architetturali e spesso non è detto che, a seconda di ottimizzazioni, la classe venga ripristinata esattamente com'è. Ad esempio, il compilatore potrebbe eliminare qualche campo inutilizzato o modificare l'aspetto binario della classe stessa in base al suo utilizzo, rendendo poi impossibile recuperare i dati correttamente.

Secondo me, dovresti usare una struct che, se non ricordo male, rispecchia un record (Pascal) al posto di class, oppure implementare il codice che, campo per campo, salva i dati della classe in un file e successivamente il recupera usando un formato personalizzato, un tuo protocollo, e non facendo lo "streaming" direttamente su disco.

Poi, ribadisco, non ho usato molto C++ e quindi potrei aver scritto una marea di sciocchezze.

Attendi feedback e altri suggerimenti...

Ciao!