Article View: be.comp.programming
Article #6477Re: ISO C++ does not permit ...
From: Jack D
Date: Wed, 11 Dec 2002 12:50
Date: Wed, 11 Dec 2002 12:50
54 lines
2560 bytes
2560 bytes
Franky Braem wrote on 10-12-2002 20:21:
> "Bert Peers" <piek@ab.oo> wrote in message
> news:VKqJ9.15$Ih.2944@news.chello.be...
>> Franky Braem wrote:
>>
>>> class A : public T<A>
>>> {
>>> };
>>>
>>> template<class T1>
>>> class T
>>> {
>>> public:
>>> static int var;
>>> };
>>>
>>> Het volgende werkt in VC++ :
>>>
>>> int A::var = 0;
>>>
>>> maar werkt niet met gcc.
>>
>> Lijkt me logisch, dat is de definitie
>> bij een eerdere declaratie van :
>>
>> class A : public T<A>
>> {
>> static int var;
>> };
>>
>> Voor de definitie van een static geldt hetzelfde
>> als voor member functions van T<A>, die zou je
>> ook niet gaan definieren als void A::f () { }
>>
>> Dat de baseclass een template is en ook nog eens
>> A als template parameter heeft maakt niet zoveel
>> uit denk ik :)
>
> Ik denk van wel. Hierdoor krijgt A een eigen static member var. Stel dat B
> ook derived via dezelfde methode dan zal B::var en A::var niet hetzelfde
> zijn.
Ik denk dat Bert bedoelt dat je var eerst moet definieren als:
template <class T1> int T<T1>::var = 0;
In plaats van:
int A::var = 0;
Er is een verschil tussen de definitie van de statische variabele en de
access van een statische variabele. Na de definitie, mag je normaal zonder
problemen A::var gebruiken voor T<A>::var.
Technical Details
Message-ID:
<BA1CF31E.1769B%jack_221NOSP@Mhotmail.com>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-08!supernews.com!newsfeed.news2me.com!newsfeed.icl.net!newsfeed.fjserv.net!proxad.net!teaser.fr!fr.clara.net!heighliner.fr.clara.net!news2.euro.net!postnews1.euro.net!news.versatel.net!not-for-mailReferences:
<3df5fa6b$0$20770$ba620e4c@news.skynet.be> <87lm2ykkpg.fsf@appel.kotnet.org> <3df6309c$0$8499$ba620e4c@news.skynet.be> <VKqJ9.15$Ih.2944@news.chello.be> <3df63f89$0$26357$ba620e4c@news.skynet.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,c436a161484c41f1 X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2002-12-11 04:51:11 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-08!supernews.com!newsfeed.news2me.com!newsfeed.icl.net!newsfeed.fjserv.net!proxad.net!teaser.fr!fr.clara.net!heighliner.fr.clara.net!news2.euro.net!postnews1.euro.net!news.versatel.net!not-for-mail User-Agent: Microsoft-Entourage/10.1.0.2006 Date: Wed, 11 Dec 2002 13:50:22 +0100 Subject: Re: ISO C++ does not permit ... From: Jack D <jack_221NOSP@Mhotmail.com> Newsgroups: be.comp.programming Message-ID: <BA1CF31E.1769B%jack_221NOSP@Mhotmail.com> References: <3df5fa6b$0$20770$ba620e4c@news.skynet.be> <87lm2ykkpg.fsf@appel.kotnet.org> <3df6309c$0$8499$ba620e4c@news.skynet.be> <VKqJ9.15$Ih.2944@news.chello.be> <3df63f89$0$26357$ba620e4c@news.skynet.be> Mime-version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit Lines: 55 Organization: Versatel NNTP-Posting-Date: 11 Dec 2002 12:50:24 GMT NNTP-Posting-Host: 62.58.106.42 X-Trace: 1039611024 news.versatel.net 152 62.58.106.42:51251 X-Complaints-To: abuse@versatel.net