eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingOpowiadanie o GC › Re: Opowiadanie o GC
  • Data: 2009-07-27 10:44:42
    Temat: Re: Opowiadanie o GC
    Od: Krzysiek Kowaliczek <k...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Michal Kleczek wrote:
    > Krzysiek Kowaliczek wrote:
    >
    > [ciach]
    >> Powiedzmy, że jest to globalny obiekt z dwoma
    >> funkcjami statycznymi getId, releaseId za którymi
    >> kryje się mapa :).
    >>
    >
    > Prosze...
    > Wezmy scenariusz:
    > 1. mamy sobie mape long->Item
    > 2. przychodzi komunikat
    > 3. parsujemy komunikat i odczytujemy id obiektu ktorego dotyczy
    > 4. musimy w mapie znalezc obiekt odpowiadajacy temu id
    > 5. jezeli program nie trzyma (poza mapa) referencji do danego obiektu -
    > musimy usunac mapowanie z mapy
    >

    Z dokładnością do tego, że należałoby przenieść
    definicje metod do .cpp, aby uniknąć cyklicznych zależności.

    struct mapa
    {
    static void setId ( Item& item )
    {
    int id = findFreeId ();
    map_.insert ( std::make_pair ( id, &item ) );
    }


    static void releaseId ( Item& item )
    {
    map_.erase ( item.id_ );
    }

    static Item* findItem ( int id )
    {
    std::map<int, Item*>::iterator it =
    map_.find ( id );
    if ( it != map_.end () )
    return it-> second;
    else
    return 0;
    }

    private:
    static std::map<int, Item*> map_;

    }

    struct Item
    {
    ~Item ()
    {
    mapa::releaseId ( *this );
    }

    Item ()
    {
    mapa::setId ( *this );
    }

    int id_;

    };

    I teraz niezależnie czy tworzymy obiekty na stosie
    czy alokujemy dynamicznie ( pod warunkiem, że go zwolnimy ),
    zawsze zadziała.

    Pozdrawiam
    KK

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: