eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingszablony metod - deklaracja i definicja › szablony metod - deklaracja i definicja
  • Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail
    From: "Megas" <k...@o...eu>
    Newsgroups: pl.comp.programming
    Subject: szablony metod - deklaracja i definicja
    Date: Wed, 26 Aug 2009 21:17:24 +0200
    Organization: http://onet.pl
    Lines: 43
    Message-ID: <h741o5$vof$1@news.onet.pl>
    NNTP-Posting-Host: ip187-138.ghnet.pl
    X-Trace: news.onet.pl 1251314245 32527 83.175.187.138 (26 Aug 2009 19:17:25 GMT)
    X-Complaints-To: n...@o...pl
    NNTP-Posting-Date: Wed, 26 Aug 2009 19:17:25 +0000 (UTC)
    X-Priority: 3
    X-MSMail-Priority: Normal
    X-Newsreader: Microsoft Outlook Express 6.00.2900.5843
    X-RFC2646: Format=Flowed; Original
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579
    Xref: news-archive.icm.edu.pl pl.comp.programming:183351
    [ ukryj nagłówki ]

    Witam wszystkich,

    Mam problem z kompilacja kodu C++ pod Visual Studio 2005 w ktorym
    zdefiniowałem sobie szablon metody w klasie - moze ktos juz spotkal sie z
    takim problemem?

    Stworzyłem sobie biblioteke *.dll, gdzie w pliku A.h zadeklarowałem klase A
    zawierajaca szablon metody, zas w pliku A.cpp zdefiniowałem ciało tego
    szablonu:
    // plik A.h
    class __declspec(dllexport) A {
    template<typename _T>
    A& operator<<( const _T lNumer );
    };

    // plik A.cpp
    template<typename _T>
    A& A::operator<<( const _T lNumer ) {
    *pStream_ << lNumer;
    return *this;
    }
    Biblioteka *.dll poprawnie mi sie kompiluje i linkuje, jednak uzycie
    operatora<< tej klasy poza ta biblioteka (np. w pliku *.exe) powoduja blad
    linkera: error LNK2019: unresolved external symbol.

    Ale gdy tylko umieszcze deklaracje i definicje tego opertatora w tym samym
    miejscu:
    // plik A.h
    class __declspec(dllexport) A {
    template<typename _T>
    A& operator<<( const _T lNumer ){
    *pStream_ << lNumer;
    return *this;
    }
    };
    to wszystko działa poprawnie i moge z tego operatora korzystac w plikach
    *.exe bez zadnego problemu.

    Czy moze ktos wie dlaczego tak sie dzieje??

    Pozdrawiam


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: