eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › specjalizacja funkcji skladowej szablonu
Ilość wypowiedzi w tym wątku: 7

  • 1. Data: 2010-01-05 16:10:30
    Temat: specjalizacja funkcji skladowej szablonu
    Od: Krzysztof Poc <f...@w...pl>

    Witajcie

    W jaki sposob moge zaimplementowac specjalizacje funkcji skladowej
    szablonu.
    Wiem, ze moge to zrobic dla calej klasy, ale ja chcialbym to zrobic
    tylko dla
    funkcji skladowej. Ponizej zalaczam przyklad ktory sie nie kompiluje.

    dzieki za pomoc

    template <class T>
    class MyContainer
    {
    public:
    void Sum ( T elem ) {}
    void Sum ( char elem ) {} // !!! specjalizacja, nie kompiluje sie :
    (
    };


  • 2. Data: 2010-01-05 21:07:50
    Temat: Re: specjalizacja funkcji skladowej szablonu
    Od: Paweł Kierski <n...@p...net>

    W dniu 2010-01-05 17:10, Krzysztof Poc pisze:
    > Witajcie
    >
    > W jaki sposob moge zaimplementowac specjalizacje funkcji skladowej
    > szablonu.
    > Wiem, ze moge to zrobic dla calej klasy, ale ja chcialbym to zrobic
    > tylko dla
    > funkcji skladowej. Ponizej zalaczam przyklad ktory sie nie kompiluje.
    >
    > dzieki za pomoc
    >
    > template<class T>
    > class MyContainer
    > {
    > public:
    > void Sum ( T elem ) {}
    > void Sum ( char elem ) {} // !!! specjalizacja, nie kompiluje sie :
    > (
    > };

    U mnie http://codepad.org/JU0TB9ZG działa. Tylko ten nawias
    otwierający z przed klamrowego zamykającego definicję klasy trzeba
    wywalić (chyba, że to artefakt kopiowania do czytnika).

    --
    Paweł Kierski
    n...@p...net


  • 3. Data: 2010-01-06 07:28:16
    Temat: Re: specjalizacja funkcji skladowej szablonu
    Od: Maciej Pilichowski <P...@g...com>

    On Tue, 5 Jan 2010 08:10:30 -0800 (PST), Krzysztof Poc
    <f...@w...pl> wrote:

    >
    >template <class T>
    >class MyContainer
    >{
    >public:
    > void Sum ( T elem ) {}
    > void Sum ( char elem ) {} // !!! specjalizacja, nie kompiluje sie :
    >(
    >};

    To nie jest specjalizacja, tylko przeciazenie. I taka definicja sie
    polozy w przypadku T = char, bo nie mozesz miec dwoch metod/funkcji o
    identycznych sygnaturach.

    milego dnia, hej


  • 4. Data: 2010-01-06 07:28:49
    Temat: Re: specjalizacja funkcji skladowej szablonu
    Od: Maciej Pilichowski <P...@g...com>

    On Tue, 05 Jan 2010 22:07:50 +0100, Paweł Kierski <n...@p...net>
    wrote:

    > U mnie http://codepad.org/JU0TB9ZG działa.

    Bo dales T = int ;-)

    milego dnia, hej


  • 5. Data: 2010-01-08 21:11:20
    Temat: Re: specjalizacja funkcji skladowej szablonu
    Od: Paweł Kierski <n...@p...net>

    W dniu 2010-01-06 08:28, Maciej Pilichowski pisze:
    > On Tue, 05 Jan 2010 22:07:50 +0100, Paweł Kierski<n...@p...net>
    > wrote:
    >
    >> U mnie http://codepad.org/JU0TB9ZG działa.
    >
    > Bo dales T = int ;-)

    Co innego - też działa: http://codepad.org/Iu2Emmfa

    --
    Paweł Kierski
    n...@p...net


  • 6. Data: 2010-01-11 07:24:56
    Temat: Re: specjalizacja funkcji skladowej szablonu
    Od: Maciej Pilichowski <P...@g...com>

    On Fri, 08 Jan 2010 22:11:20 +0100, Paweł Kierski <n...@p...net>
    wrote:

    >W dniu 2010-01-06 08:28, Maciej Pilichowski pisze:
    >> On Tue, 05 Jan 2010 22:07:50 +0100, Paweł Kierski<n...@p...net>
    >> wrote:
    >>
    >>> U mnie http://codepad.org/JU0TB9ZG działa.
    >>
    >> Bo dales T = int ;-)
    >
    > Co innego - też działa: http://codepad.org/Iu2Emmfa

    Dobra, powiem to wprost ;-D Bo dales T != char. Daj char :-)

    milego dnia, hej


  • 7. Data: 2010-01-22 16:41:55
    Temat: Re: specjalizacja funkcji skladowej szablonu
    Od: Krzysztof Poc <f...@w...pl>

    On Jan 8, 10:11 pm, Paweł Kierski <n...@p...net> wrote:
    > W dniu 2010-01-06 08:28, Maciej Pilichowski pisze:
    >
    > > On Tue, 05 Jan 2010 22:07:50 +0100, Paweł Kierski<n...@p...net>
    > > wrote:
    >
    > >>    U mniehttp://codepad.org/JU0TB9ZGdziała.
    >
    > > Bo dales T = int ;-)
    >
    >    Co innego - też działa:http://codepad.org/Iu2Emmfa
    >
    > --
    >      Paweł Kierski
    >      n...@p...net

    Kod z ponizsza modyfikacja tez sie u mnie kompiluje, ale niestety
    wolana jest jedynie generyczna funkcja.
    Gdzies wyczytalem ze musze wyspecjalizowac szablon zeby
    wyspecjalizowac konkretna funkcje.
    Czy to prawda ?


    #include <iostream>

    using namespace std;

    template <class T>
    class MyContainer
    {
    private:
    T m_elem;

    public:
    MyContainer ( T elem ) : m_elem ( elem ) {}

    void Sum ( T elem )
    {
    m_elem += elem;
    cout << "generic" << endl;
    }

    template <char>
    void Sum ( char elem ) // nie jest wolany
    {
    cout << "specialization" << endl;
    }
    };

    int main ( void )
    {
    MyContainer<int> containerInt ( 10 );
    containerInt . Sum ( 5 );

    MyContainer<char> containerChar ( 'A' );
    containerChar . Sum ( 'B' ); // wolany jest generic :(

    return 0;
    }

strony : [ 1 ]


Szukaj w grupach

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: