Jeżeli dobrze myślę to Warzywo dziedziczy od Towar? Dodaj im funkcję Wypisz która jak sama nazwa wskazuje zapisze do pliku.
Alokacja tablicy dynamicznej klasy Towar lub map<string, Towar*>towarki.
Dodajesz towary lub warzywa(bedzie je można dodać bo dziedziczą od Towar).
void WypiszWszystko()
{
For(...) towarki[i]->Wypisz();
}
W przypadku Map będziesz musiał zrobić iteratorem.
Jeżeli o to Ci chodziło to tak brzmi moja propozycja.