Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Šablonske klase sa statičkim atributima

[es] :: C/C++ programiranje :: Šablonske klase sa statičkim atributima

[ Pregleda: 2179 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.dial.InfoSky.Net.



+2789 Profil

icon Šablonske klase sa statičkim atributima21.10.2004. u 23:48 - pre 237 meseci
Da li C++ standard dopušta da šablonske klase imaju statičke atribute? Linux kompajler je takav kod uspešno preveo, ali mi se čini da sam negde pročitao da to nije po standardu (mada ne vidim razlog), pa bih voleo da budem siguran.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Mrav
Aleksandar Mraović
.net programer u Wireless Media
Beograd

Član broj: 6532
Poruke: 279
*.smin.sezampro.yu.

ICQ: 197419540


Profil

icon Re: Šablonske klase sa statičkim atributima22.10.2004. u 02:00 - pre 237 meseci
Na šta konkretno misliš? Nešto ovako:

template <static class T>
class NekiSablon
{
};

Ako je to u pitanju, u VC++ 6.0 to radi, a da li je po standardu ne znam.
Lepota je u jednostavnosti.

Cis.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.bos.east.verizon.net.



+6 Profil

icon Re: Šablonske klase sa statičkim atributima25.10.2004. u 02:20 - pre 237 meseci
Sa zaprepašćenjem sam konstatovao da ovo prolazi u VC++ 7.1

Code:

template <static class T>
class NekiSablon
{
T t_;
public:
    NekiSablon (T t): t_(t) {}
};

int main ()
    {
    NekiSablon<int> i(1);
    }


GCC prijavljuje grešku (kao što i treba koliko ja znam).

Uglavnom, prilično sam siguran da je Nedeljko hteo da pita da li je dozvoljeno nešto kao:

Code:

template <class T>
class NekiSablon
{
static T t_;
...
};


Dozvoljeno je, zašto ne bi bilo? Samo obrati pažnju da ćeš dobiti posebnu instancu statičke promenljive za svaku specijalizaciju šablona. Tj:

Code:

NekiSablon<int>::t_; // jedna stvar
NekiSablon<double>::t_ // sasvim druga stvar


 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.rcub.bg.ac.yu.



+2789 Profil

icon Re: Šablonske klase sa statičkim atributima25.10.2004. u 11:58 - pre 237 meseci
Da, to sam hteo da pitam, a u međuvremenu sam konsultovao i zvanični dokument C++ standard iz 1998. No, logično je da imam po jednu statičku promenljivu za svaku specijalizaciju šablona, jer su T<int> i T<double> različte klase. Sa druge strane,

T<int> a;
T<int> b;

mi daju samo jednu statičku promenljivu, jer se rtadi o istoj klasi. No, na nešto drugo valja obratiti pažnju. Unutar klase mi samo deklarišemo statički atribut, dok se on definiše (i inicijalizuje) van klase. To je zato da ne bi došlo do duplih identifikatora u objektnim fajlovima različitih modula programa. U zaglavlju će stajati deklaracija klase sa deklaracijom statičkih atributa, a na tačno jednom mestu programu definicija tog statičkog atributa zajedno sa inicijalizacijom (recimo, u izvornom fajlu u kome se definiše sama klasa). To važi i za šablonske i nešablonske klase.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Mrav
Aleksandar Mraović
.net programer u Wireless Media
Beograd

Član broj: 6532
Poruke: 279
*.smin.sezampro.yu.

ICQ: 197419540


Profil

icon Re: Šablonske klase sa statičkim atributima25.10.2004. u 15:17 - pre 237 meseci
template <static class T>

Čemu ovo služi?

A uz to i ne radi :)

Znači ako je ovo kao što vidimo i dozvoljeno u nekim implementacijama, meni lično nije jasno značenje ovoga, šta se time dobija? Ili je to ligika Microsofta - samo da ima a nije važno ni kako radi ni da li ičemu služi.
Lepota je u jednostavnosti.

Cis.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.dial.InfoSky.Net.



+2789 Profil

icon Re: Šablonske klase sa statičkim atributima25.10.2004. u 23:54 - pre 237 meseci
Ne znam. Moje se pitanje odnosilo na
Code:

template <class T>
class NekiSablon
{
static T t_;
...
};

Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

rivan
Ivan Radovanović

Član broj: 1901
Poruke: 71
*.preco1990.com.

ICQ: 212235650


Profil

icon Re: Šablonske klase sa statičkim atributima26.10.2004. u 07:38 - pre 237 meseci
Citat:
Dragi Tata: Sa zaprepašćenjem sam konstatovao da ovo prolazi u VC++ 7.1

Code:

template <static class T>
class NekiSablon
{
T t_;
public:
    NekiSablon (T t): t_(t) {}
};

int main ()
    {
    NekiSablon<int> i(1);
    }


GCC prijavljuje grešku (kao što i treba koliko ja znam).


Ja sam sad nacisto zbunjen (pod pretpostavkom da je gornji primer sintaksno ispravan - da static nesto znaci) - zasto gornji primer ne bi trebao da prodje - koliko vidim g++ prijavljuje gresku na static

Prvi put vidim static u listi argumenata za template - moze li neko da pojasni cemu to sluzi (mozda zato sto nisu stavili export za template - pa rekli ajd da stavimo nesto drugo kao zamenu :-) )

uzgred cini mi se da se static ne uklapa ni u njihovu gramatiku za template u MSDNu, a ipak prolazi
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
66.228.70.*



+6 Profil

icon Re: Šablonske klase sa statičkim atributima26.10.2004. u 13:06 - pre 237 meseci
Pitao sam neke MS-ovce. Očigledno je u pitanju bug. Čak su i otvorili bug report za sledeću verziju kompajlera:

http://lab.msdn.microsoft.com/...back.aspx?feedbackId=FDBK17054

Mrave, smeši ti se lepa karijera u QA :)
 
Odgovor na temu

Mrav
Aleksandar Mraović
.net programer u Wireless Media
Beograd

Član broj: 6532
Poruke: 279
*.smin.sezampro.yu.

ICQ: 197419540


Profil

icon Re: Šablonske klase sa statičkim atributima26.10.2004. u 17:03 - pre 237 meseci
Citat:
Mrave, smeši ti se lepa karijera u QA :)


Ma sad ću da ih razbijem, pronaći ću im ja još nešto ;) . Ima Billy lično da me zove da radim za njih.

P.S. Hmm? izgleda da im se ovaj bug provlači u verziji 6.0 pa nadalje do vs 2005.
Mislite o tome....
Lepota je u jednostavnosti.

Cis.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Šablonske klase sa statičkim atributima

[ Pregleda: 2179 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.