Najwidoczniej nie wiesz, że komputer nie zapamiętuje Twoich nazw dla zmiennych, które wpisujesz w kodzie. Kompilator i tak nazwie wszystko po swojemu. Coś w stylu: 0xF898B4. Po skompilowaniu programu, wszystkie Twoje nazwy przepadają.
Jeśli u Ciebie w programie utworzenie obiektu jakiejś Twojej klasy jest równoznaczne z utworzeniem pliku na dysku i obawiasz się na przyszłość, że będziesz tych obiektów miał "miliardy", to wymuś na samym sobie podanie nazwy pliku dla każdego obiektu. Skonstruuj konstruktor w taki sposób. Coś w ten deseń:
class Figura
{
string nazwa;
public:
Figura( string _nazwa )
: nazwa( _nazwa )
{}
}
Dzięki takiemu zabiegowi nie utworzysz obiektu bez podania nazwy pliku. Problem solved! (możesz mieć tylko mały kłopot, aby dynamicznie utworzyć tablicę takich obiektów)
A jeśli nadal to Cię nie satysfakcjonuje, to polecałbym zmienić koncepcję programu. Pomysł, że każdy obiekt posiada swój własny plik na dysku jest bardzo dziwny. Może to prowadzić do wielu problemów w przyszłości. Wystarczy, że 2 obiekty przypadkowo będą władać tym samym plikiem. Będą nawzajem nadpisywać sobie dane. W folderze po zakończonej pracy Twojego programu będzie panował istny chaos.
Jeśli masz wiele danych do zapisywania, to zapisuj wszystko w jednym pliku. Pisz techniką OO. Jedna klasa powinna zajmować się zapisywaniem do pliku konfiguracyjnego, a inne klasy powinny jej to zlecać. Hierarchia w programach Orientowanych Obiektowo jest niezwykle istotna. To co chcesz zrobić przypomina mi trochę jakąś prowizoryczną bazę danych, w której każdy jest swoim szefem i zapisuje się na dysku kiedy chce :-D
Nadal nie wiem co chcesz osiągnąć, ale cokolwiek to jest, ma mało wspólnego z poprawnym wykorzystywaniem obiektowości :-)