eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming[C++] Sprawdzenie nulla dla strukturyRe: [C++] Sprawdzenie nulla dla struktury
  • Data: 2010-02-18 10:07:38
    Temat: Re: [C++] Sprawdzenie nulla dla struktury
    Od: "GrzybSon" <m...@k...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Użytkownik "Łukasz 'Maly' Ostrowski" <m...@U...pl> napisał w wiadomości
    news:ooc6nc4igkw0.gfm4k8thtl9k.dlg@40tude.net...
    > On Thu, 18 Feb 2010 09:40:47 +0100, GrzybSon wrote:
    >
    >> Użytkownik "Jędrzej Dudkiewicz" <j...@g...com> napisał w
    >> wiadomości news:hlh87d$ngd$1@news.onet.pl...
    >>> Ale przecież w tym przypadku to jest zawsze prawda, to po co ten warunek
    >>> tam umieszczać?
    >>
    >> Racja.
    >> Wkońcu skonsultowałem się ze specem od C++ i okazuje się, że unia zawsze
    >> ma
    >> wypełnione struktury domyślnymi wartościami
    >
    > Huh? Kto jest rzekomym specem od C++? Sprzątaczka firmowa? ;-)
    Sprzątaczka programuje tylko ... pralki :)
    Widzę
    >
    > W czymkolwiek bez explicit inicjalizacji będą śmieci z memory
    > allokatora.
    >
    >> (inaczej jest w C#),
    >
    > Unie w C#? Czy "inaczej" == "struktury NIE SĄ inicjowane domyślnymi
    > wartościami w C#"? Pogrąża sie Kolega powoli, acz stopniowo.

    Nie pogrążam tylko nie zakumałeś o czym mowa:

    struct TopStruct
    {
    int i;
    string komunikat;
    NestedStruct nested;
    }

    struct NestedStruct
    {
    InnerStruct inner;
    }

    jeżeli teraz wykonam taki kod

    TopStruct str = new TopStruct();
    to komunikat będzie nullem
    tak samo jak nested
    i będzie miało wartość 0

    Inaczej to wygląda w C++ gdzie po wywołaniu memseta na TopStruct zostaje
    odrazu wypełniona wartościami cała struktura
    TopStruct razem z jej zagnieżdżeniami. Może i tam są śmieci, ale jakieś
    wartości są.

    >
    >> więc to sprawdzenie rzeczywiście nie ma sensu. Jedynie
    >> co muszę zrobić to sprawdzać poszczególne pola w strukturze czy są
    >> zainicjowane jakimiś sensownymi wartościami (mówię tu np. o char *, który
    >> jest odpowiednikiem stringa w .NET).
    >
    > Monte-Carlo? Prawopodobnie jak już sie trzeba pchać w wątpliwe rozwiązania
    > to lepiej to zrobić jakimś sprawdzonym patternem:
    >
    > http://en.wikipedia.org/wiki/Tagged_union
    >
    > Czyli "przekazywać dodatkowe info który variant jest obowiązujący".
    >
    > A najlepiej to przemyśleć całość od nowa. ;-).
    >
    > --
    > Pozdrawiam,
    > Łukasz 'Maly' Ostrowski. http://l3v.pl/
    > ICQ: 148498663 GG: 2544385 AIM: malyzgora
    > GTalk: l...@g...com ASTRA: L3viathan



Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: