www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2001/05/03/15:38:39

From: "Rafal Maj" <maj_rafal AT poczta DOT onet DOT pl>
Newsgroups: comp.os.msdos.djgpp
Subject: Odp: static
Date: Thu, 3 May 2001 17:24:37 +0200
Organization: Academic Computer Center CYFRONET AGH
Lines: 52
Message-ID: <9cs1p8$a0d$1@info.cyf-kr.edu.pl>
References: <9cre3n$4bq$1 AT info DOT cyf-kr DOT edu DOT pl>
NNTP-Posting-Host: d-94-53-28.cyfronet.krakow.pl
X-Trace: info.cyf-kr.edu.pl 988908137 10253 149.156.1.188 (3 May 2001 16:42:17 GMT)
X-Complaints-To: news AT cyf-kr DOT edu DOT pl
NNTP-Posting-Date: Thu, 3 May 2001 16:42:17 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.00.2615.200
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2615.200
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

After short lecture of "Symphony of C++" I realise, that I just forgot to
put declaration of my static variable outside class definition ;).
But, ther still is small bug in DJGPP : my first example - with missing
declaration outside class and with function body inside class - is compiling
without any errors or warnings ?!

class cA {
  public : static int a;
  public : static void f();
};
int cA::a; // <- :)
void cA::f() { a=3; }
int main() { }

Użytkownik Rafal Maj <maj_rafal AT poczta DOT onet DOT pl> w wiadomo¶ci do grup
dyskusyjnych napisał:9cre3n$4bq$1 AT info DOT cyf-kr DOT edu DOT pl...
> (Please, I need to get answer fast - if You can help me)
> I didn't use static for long time, so I have totaly forgoten how to use it
> :-(
>
> Why this code :
>   class cA {
>      private : static int a;
>      public : static void f();
>   };
>   void cA::f() { a=3; }
>   int main() { }
> gives me this error message :
>   Creating: a.exe
>   Error: a.o: In function `cA::f(void)':
>   Error: a.cc(.text+0x5): undefined reference to `cA::a'
>   Error: collect2: ld returned 1 exit status
> Why after moving body of static function inside class definition
everything
> is allright :
>   class cA {
>     private : static int a;
>     public : static void f() { a=3; }; // ok
>   };
>   // void cA::f() { a=3; } - error
>   int main() { }
>
> How to write this small example correct ? I must have funciton body
outside
> of class definition, because I want this class to be splited into .cc and
.h
>
> Thanks in advice....
>
>


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019