Szczegółowy opis:
Do tej pory z symfonii ogarnąłem już instrukcje sterujące, typy, operatory, funkcje, wskaźniki, wiem też co nieco o preprocesorze i przeładowaniu funkcji, klasach oraz klasie string (właściwie skończyłem czytać cały pierwszy tom).
Doszedłem do wniosku, że najwyższy czas zdobytą wiedzę wykorzystać w praktyce, rozwiązując troszeczkę bardziej skomplikowany problem niż te, które napotykałem do tej pory na końcu każdego rozdziału tej książki. Pomyślałem o napisaniu prostej książki adresowej, w której będę miał możliwość:
- Dodawania kontaktu
- Wyświetlania kontaktu
- Usunięcia kontaktu
- Wyświetlenia wszystkich kontaktów
- Edycji informacji nt. konkretnego kontaktu
- Zapis do zewnętrznego pliku
- Odczytania z zewnętrznego pliku
Problem właściwy:
No i już na początku napotkałem pewien problem. Nie wiem za bardzo,w jaki sposób mam, w czasie działania programu, utworzyć nowy obiekt klasy osoba. Tzn wiem, że mógłbym posłużyć się w tym celu dynamiczną alokacją tablicy, tylko moje pytanie brzmi - jak? Bo ona pozwala mi utworzyć tablicę o zadanym rozmiarze, ale powiększyć jej nie mogę. Myślałem o rozwiązaniu tego problemu w ten sposób, iż jeśli będę musiał dodać nowy kontakt, to po prostu zostanie stworzona nowa tablica tych obiektów, o 1 większa od poprzedniej i wszystkie wpisy ze starej tablicy zostaną skopiowane do nowej. Wydaje mi się jednak, że jest to bardzo niewydajne rozwiązanie, bo tych danych do skopiowania jest całkiem sporo.
Myślałem również o utworzeniu czegoś w rodzaju spisu adresów danych obiektów, czyli dajmy na to, mamy to dynamicznie zmieniającą się tablicę wskaźników, która przechowują adresy obiektów klasy osoba i podobnie jak poprzednio, gdy tworzę nowy obiekt, to tworzona jest nowa tablica tych wskaźników, adresy są przepisywane a stara jest kasowana - tym razem muszę skopiować tylko adresy tych obiektów, na które pokazywały, więc pracy jest jakby mniej.
Czy jest jakiś lepszy sposób? Z góry dzięki za odpowiedź.