[C++][SLOVED] Problem wymiany informacji pomiędzy klasami

Witam.

Piszę program bankomat - mam w nim dwie klasy - bankomat oraz interfejs (w plikach system.h, interface.h). Obiekt klasy interfejs tworzony jest wewnątrz klasy bankomat. Chciałbym móc swobodnie z poziomu interfejsu zmieniać pola bankomatu. Mogę bez problemu modyfikować pola klasy interfejs z poziomu bankomatu, jednak nie mam bladego pojęcia jak się za to zabrać w odwrotną stronę. Owszem, da się wszystkie pola interfejsu dać do sekcji public i odczytywać je z poziomu bankomatu, ale to rozwiązanie raczej nieeleganckie. Próbowałem zrobić dziedziczenie, jednak otrzymuję błąd przepełnienia bufora w momencie tworzenia obiektu interface, mimo iż sam projekt buduje się bezbłędnie.

Mój kompilator to Visual Studio 2008 SP1, system Windows 7 professional.

main.cpp tylko inicjalizuje system, Podejrzewam że może być coś nie tak z moim sposobem dołączania plikow nagłówkowych.

edit // Wywaliłem kod, gdyż niewiele wnosił do tematu. Dane z interfejsu odczytuję za pomocą wskaźnika, pola interfejsu są w sekcji private (interfejs zaprzyjaźniłem z bankomatem).

Nie wiem czy o to chodzi, ale sprobuj dać deklaracje przyjaźni w klasie bankomat. Wtedy klasa interfejs będzie miała dostęp do prywatnych składników klasy bankomat. A przy dziedziczeniu jeśli chcesz mieć dostęp do składników klasy nadrzędnej zastosuj protected zamiast private.

Co do dziedziczenia nie mam bladego pojęcia dlaczego przy uruchomieniu programu otrzymuję natychmiast (w momencie tworzenia obiektu interfejs) błąd przepełnienia bufora. :? . Problem obszedłem tak jak napisałem w pierwszym poście - wszystkie pola i metody interfejsu są publiczne (notabene struktura z tego wyszła). Deklaracja przyjaźni ? Dokładnie o to chodziło - myślałem że można dodawać tylko pojedyncze metody, nie wiedziałem że można dodać od tak całą klasę. Dzięki za wskazówkę.

Zmień klauzule private w bakomat na protected i masz pełny dostęp.

Nie wiem czemu, ale dziedziczenie wywoływało u mnie błąd przepełnienia bufora (nawet jak zmieniłem etykietę na ptorected), także to nie wchodziło w rachubę. Poza tym dziedziczenie jest mi kompletnie zbędne. Wcześniej prawie wszystkie zadania próbowałem realizować wewnątrz bankomatu, teraz przynajmniej nauczyłem się prawidłowo oddzielać od siebie algorytm od interfejsu :slight_smile: