eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingczemu: jeden system + różne kompilatory = problem? › Re: czemu: jeden system + różne kompilatory = problem?
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.inte
    rnetia.pl!not-for-mail
    From: Szyk <s...@o...pl>
    Newsgroups: pl.comp.programming,pl.comp.lang.c
    Subject: Re: czemu: jeden system + różne kompilatory = problem?
    Date: Wed, 04 Jan 2012 10:39:32 +0100
    Organization: Netia S.A.
    Lines: 75
    Message-ID: <je16pf$kf0$1@mx1.internetia.pl>
    References: <jdv6hd$mrq$1@mx1.internetia.pl> <jdv86e$kf9$1@inews.gazeta.pl>
    <jdvcv1$1t4$1@mx1.internetia.pl> <je0vk4$hlv$1@inews.gazeta.pl>
    NNTP-Posting-Host: 83-238-151-66.ip.netia.com.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: mx1.internetia.pl 1325669999 20960 83.238.151.66 (4 Jan 2012 09:39:59 GMT)
    X-Complaints-To: a...@i...pl
    NNTP-Posting-Date: Wed, 4 Jan 2012 09:39:59 +0000 (UTC)
    In-Reply-To: <je0vk4$hlv$1@inews.gazeta.pl>
    X-Tech-Contact: u...@i...pl
    User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20111105 Thunderbird/8.0
    X-Server-Info: http://www.internetia.pl/
    Xref: news-archive.icm.edu.pl pl.comp.programming:194622 pl.comp.lang.c:297543
    [ ukryj nagłówki ]

    W dniu 2012-01-04 08:37, Paweł Kierski pisze:
    > W dniu 2012-01-03 18:12, Szyk pisze:
    >>
    >>>> Czy są takie systemy operacyjne w których programy (i biblioteki
    >>>> współdzielone) kompilowane różnymi kompilatorami C++ są ze sobą
    >>>> kompatybilne?
    >>>
    >>> Najlepiej przyjąć, że najmniejszym wspólnym mianownikiem jest interfejs
    >>> typu C. Do tego każde zwolnienie zasobów powinno nastąpić w tym module,
    >>> w którym zostały zaalokowane. Wtedy ma duże szansę zagrać bez względu
    >>> na kompilator.
    >>
    >> Czyli wzorzec fabryka obiektów się kłania?
    >
    > Tyle, że oprócz fabryki potrzebna jest zazwyczaj "niszczarka".

    Czemu fabryka nie mogła by mieć funkcji niszczącej? Przecież tak było by
    chyba najwygodniej.

    Przykładowo:

    class MyFactory : public QObject
    {
    protected:
    MyFactory();

    public:
    static MyFactory* instance();

    MyObject* createObject(QString aType, int aID);
    void deleteObject(MyObject* aMyObject);

    // inne funkcje pomocnicze:
    void removeObject(MyObject* aMyObject); // do usuwania obiektu
    // z bazy
    MyObject* cloneObject(MyObject* aMyObject);
    void saveObject(MyObject* aMyObject);
    signals:
    void objectChange(MyObject* aMyObject);
    void objectRemoved(MyObject* aMyObject);
    };

    > Najlepiej
    > opakować to po stronie klienta w sprytne uchwyty/wskaźniki (chyba, że
    > cały obiekt po stronie klienta jest takim uchwytem na wewnętrzne
    > zasoby).

    Masz zapewne na myśli dedykowany sprytny wskaźnik, a nie std::auto_ptr?
    Czyli chodzi Ci o coś w stylu:

    template<class tFactory, class tObject> class MySmartPtr
    {
    public:
    MySmartPtr(QString aType, int aID)
    {
    mObject = tFactory::instance()->createObject(aType, aID);
    }

    ~MySmartPtr()
    {
    tFactory::instance()->deleteObject(mObject);
    mObject = 0;
    }
    tObject* operator->()
    {
    return mObject;
    }
    protected:
    tObject* mObject;
    }

    void FactoryClient::someFunction()
    {
    MySmartPtr<MyFactory, MyObject> lPtr("MyType", 100);
    }

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: