Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

inicjalizacja zmiennej statycznej w szablonie dla konkretnego typu

3 views
Skip to first unread message

Krzysztof Poc

unread,
Jan 5, 2010, 11:08:32 AM1/5/10
to
Witajcie

W jaki sposob moge zainicjalizowac zmienna statyczna w szablonie dla
konkretnego typu. Ponizszy program inicjalizuje zmienna st jako 'a'
dla
wszystkich typow.

Dzieki za pomoc

#include <iostream>
using namespace std;

template <class T>
class Container
{
public:
static T st;
};

template <class T>
int Container<int>::st = 81;

template <class T>
char Container<char>::st = 'a'; // chyba ostatnia inicjalizacja jest
brana pod uwage

int main ( void )
{
Container<int> i1;
Container<int> i2;
Container<char> c;

cout << "i1.st: " << dec << i1.st << endl; // 'a' - ma byc 81
cout << "i2.st: " << dec << i2.st << endl; // 'a' - ma byc 81
cout << "c.st: " << dec << c.st << endl; // 'a' - ok

return 0;
}

Maciej Pilichowski

unread,
Jan 6, 2010, 2:25:39 AM1/6/10
to
On Tue, 5 Jan 2010 08:08:32 -0800 (PST), Krzysztof Poc
<fajf...@wp.pl> wrote:

>W jaki sposob moge zainicjalizowac zmienna statyczna w szablonie dla
>konkretnego typu. Ponizszy program inicjalizuje zmienna st jako 'a'
>dla
>wszystkich typow.

Specjalizacja jesli sie nie myle.

template <char>
char Container<>::st = 'a';

milego dnia, hej

Krzysztof Poc

unread,
Jan 20, 2010, 3:38:23 AM1/20/10
to
On Jan 6, 8:25 am, Maciej Pilichowski

<Pilichowski.MaciejSkasu...@gmail.com> wrote:
> On Tue, 5 Jan 2010 08:08:32 -0800 (PST), Krzysztof Poc
>
> <fajfu...@wp.pl> wrote:
> >W jaki sposob moge zainicjalizowac zmienna statyczna w szablonie dla
> >konkretnego typu. Ponizszy program inicjalizuje zmienna st jako 'a'
> >dla
> >wszystkich typow.
>
> Specjalizacja jesli sie nie myle.
>
> template <char>
> char Container<>::st = 'a';

dzieki za pomoc
niestety to rowniez, nie dziala :(
efekt taki sam jak pierwotnie

Roman Werpachowski

unread,
Jan 21, 2010, 7:32:28 AM1/21/10
to
On 20 Jan, 08:38, Krzysztof Poc <fajfu...@wp.pl> wrote:

> dzieki za pomoc
> niestety to rowniez, nie dziala :(
> efekt taki sam jak pierwotnie

Wpisz

template <>


char Container<char>::st = 'a';

do pliku .cpp (a nie .h).

RW

Krzysztof Poc

unread,
Jan 22, 2010, 11:12:07 AM1/22/10
to
On Jan 21, 1:32 pm, Roman Werpachowski <roman.werpachow...@gmail.com>
wrote:

wielki dziex
teraz poszlo :)

Roman Werpachowski

unread,
Jan 22, 2010, 3:53:07 PM1/22/10
to

A rozumiesz, dlaczego?

RW

Krzysztof Poc

unread,
Feb 2, 2010, 4:24:04 AM2/2/10
to
On Jan 22, 9:53 pm, Roman Werpachowski <roman.werpachow...@gmail.com>

wrote:
> On 22 Sty, 16:12, Krzysztof Poc <fajfu...@wp.pl> wrote:
>
>
>
> > On Jan 21, 1:32 pm, Roman Werpachowski <roman.werpachow...@gmail.com>
> > wrote:
>
> > > On 20 Jan, 08:38, Krzysztof Poc <fajfu...@wp.pl> wrote:
>
> > > > dzieki za pomoc
> > > > niestety to rowniez, nie dziala :(
> > > > efekt taki sam jak pierwotnie
>
> > > Wpisz
>
> > > template <>
> > > char Container<char>::st = 'a';
>
> > > do pliku .cpp (a nie .h).
>
> > > RW
>
> > wielki dziex
> > teraz poszlo :)
>
> A rozumiesz, dlaczego?
>
> RW

Dla scislosci, bledny kod (bledna inicjalizacja):

template <class T>


char Container<char>::st = 'a';

lub

template <char>


char Container<char>::st = 'a';

Prawidlowy kod:

template <>
char Container<char>::st = 'a';

To ze "template <class T>" powodowalo inicjalizowanie rowniez
pozostalych zmiennych moglbym wytlumaczyc jako dopasowanie pozostalych
typow do "class T".
Jednak chyba nie dokonca jestem swiadom dlaczego tak samo zle dziala
"template <char>".

Roman Werpachowski

unread,
Feb 3, 2010, 10:55:01 AM2/3/10
to
On 2 Feb, 09:24, Krzysztof Poc <fajfu...@wp.pl> wrote:
> Dla scislosci, bledny kod (bledna inicjalizacja):
>
> template <class T>
> char Container<char>::st = 'a';
>
> lub
>
> template <char>
> char Container<char>::st = 'a';
>
> Prawidlowy kod:
>
> template <>
> char Container<char>::st = 'a';
>
> To ze "template <class T>" powodowalo inicjalizowanie rowniez
> pozostalych zmiennych moglbym wytlumaczyc jako dopasowanie pozostalych
> typow do "class T".
> Jednak chyba nie dokonca jestem swiadom dlaczego tak samo zle dziala
> "template <char>".

"template <char>" ma tyle samo sensu, co "double funkcja(double 1.34)
{ return 0.45 }"

RW

0 new messages