• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Obiekt klasy

Object Storage Arubacloud
0 głosów
343 wizyt
pytanie zadane 8 maja 2021 w C i C++ przez krzysiu99 Nowicjusz (120 p.)

Cześć wszystkim.

Mam pewien problem. Otóż napisałem program i klasy w nim zawarte i trapi mnie jedno pytanie.

 

class GARDEN_CLASS;
class BRANCH_CLASS;
class FRUIT_CLASS;


class GARDEN_CLASS{
...
}

class WOOD_CLASS{
    private:
        unsigned int ID; // Unikalny numer drzewa
        unsigned int height; // Wysokosc drzewa
        unsigned int woodBranchesCount; // Ilosc galezi na drzewie
        unsigned int woodFruitsCount; // Ilosc owocow na drzwie
        unsigned int woodFruitsWeight; // Waga owocow na drzwie
        GARDEN_CLASS *parentGarden; // Wskaznik na ogrod w ktorym znajduje sie dane drzewo

        // Pomysl: Drzewo jako lista galezi
        BRANCH_CLASS* firstBranch; // Wskaznik na pierwsza galaz na drzewie
        BRANCH_CLASS* lastBranch; // Wskaznik na ostatnia galaz na drzewie
        WOOD_CLASS *nextWood; // Wskaznik na nastepne drzewo
        WOOD_CLASS *prevWood; // Wskaznik na poprzednie drzewo

    public:
        WOOD_CLASS(GARDEN_CLASS *parent = NULL); // Konstruktor
        ~WOOD_CLASS (); // Dekonstruktor
        WOOD_CLASS(const WOOD_CLASS &copiedWood); // Konstruktor kopiujacy
}

class BRANCH_CLASS{
...
}

WOOD_CLASS::WOOD_CLASS(GARDEN_CLASS *parent) {
    ID = 0;
    height = 0;
    woodBranchesCount = 0; 
    woodFruitsCount = 0; 
    woodFruitsWeight = 0;
    parentGarden = parent; 
    firstBranch = NULL; 
    lastBranch = NULL;
    nextWood = NULL; 
    prevWood = NULL;
}

Gdy próbuję utworzyć obiekt na rzecz klasy WOOD w sposób: WOOD_CLASS wood = WOOD_CLASS(); to mój program się wysypuje. Natomiast gdy zrobię WOOD_CLASS *wood = new WOOD_CLASS();  to błąd się nie pojawia. Czy ktoś może mi wytłumaczyć dlaczego tak się dzieje? Byłbym wdzięczny

ps. pominąłem sporą część kody pisząc "...", jeśli coś z tego może być ważne, to proszę dać znać. Podeślę.

komentarz 8 maja 2021 przez TOM_CPP Pasjonat (22,640 p.)

Trudno jest cokolwiek powiedzieć mając do dyspozycji tylko fragment kodu. To jest jak wróżenie z fusów. Najlepiej będzie jak pokażesz jakiś minimal working example. Jeżeli kodu jest bardzo dużo możesz wykorzystać platformę godbolt.org, a tutaj zamieścić tylko odpowiedni link.

komentarz 8 maja 2021 przez krzysiu99 Nowicjusz (120 p.)

@krzysiu99,

Dziękuję za odpowiedź. Znalazłem błąd. Skoro WOOD_CLASS *wood2 nie powodowało błędu, a WOOD_CLASS wood już tak, to pomyślałem, że w destruktorze może być błąd. Tym bardziej, że na wood mogłem wywoływać metody. W destruktorze próbowałem się dostać do pamięci "poza" moim programem. To dla tych, którzy spotkali by się z takim problemem i tu trafili 

komentarz 8 maja 2021 przez TOM_CPP Pasjonat (22,640 p.)

Jeżeli nie musisz używać tzw. gołych wskaźników to pomyśl o użyciu inteligentnych - unique_ptr i shared_ptr. Nie będziesz wtedy musiał martwić się o zwalnianie zasobów w destruktorze i tego typy błędy nie będą występować.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 546 wizyt
pytanie zadane 5 maja 2019 w Java przez poldeeek Mądrala (5,980 p.)
0 głosów
3 odpowiedzi 463 wizyt
+1 głos
1 odpowiedź 5,472 wizyt
pytanie zadane 19 kwietnia 2016 w C# przez timrh Mądrala (6,030 p.)

92,568 zapytań

141,421 odpowiedzi

319,629 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...