Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C++ - Klasy. Program się wysypuje po zakończeniu jednej z metod

sawner 16 Maj 2013 19:13 948 2
  • #1 16 Maj 2013 19:13
    sawner
    Poziom 2  

    Mam następujący programik:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Wczytuje on dane z pliku dane.txt (pierwsza liczba = liczba osobników w populacji, kolejne kodują poszczególne osobniki wg klucza 0=GT_GOOD, 1=GT_BAD, 2=GT_ANOTHER). Przykładowy plik przesyłam w załączniku.

    Program poprawnie wczytuje dane i wyświetla wielkość populacji, po czym się wysypuje (najprawdopodobniej w chwili zakończenia metody cMainApp::LoadData).

    Czy ktoś mógłby rzucić na to okiem i sprawdzić co jest nie tak?

    Pozdrawiam i z góry dziękuję.

    0 2
  • Pomocny post
    #2 16 Maj 2013 19:46
    beluosus
    Poziom 25  

    Kod: cpp
    Zaloguj się, aby zobaczyć kod
    Tu ustawiasz wskaźnik na zmienną lokalną (która jest kopią parametru, który przekazujesz) - za nawiasem } jest niszczona.
    Musisz przekazać wskaźnik lub referencję:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod
    Ale pamiętaj żeby w destruktorze cMainApp nie robić delete Plantacja, ponieważ:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod
    Twoja Plantacja jest lokalną zmienną funkcji main. Chyba, że utworzysz cPlantację dynamicznie (przez new) to wtedy owszem - nie będzie wycieku, ale będzie błąd projektowy. Skoro main tworzy to main powinien usunąć, a nie jakiś tam destruktor ukryty z punktu widzenia użytkownika klasy.

    0
  • #3 16 Maj 2013 20:26
    sawner
    Poziom 2  

    Działa. Wydawało mi się, że w ten sposób (this->Plantacja = &Plantacja) będę operował przez wskaźnik na obiekcie o adresie &Plantacja. A tu proszę, niespodzianka.

    Dzięki wielkie.

    0