From: Roland Exler Newsgroups: comp.os.msdos.djgpp Subject: Re: Undefined reference to static members Date: Tue, 22 Oct 1996 08:14:59 -0700 Organization: Institute for el. Measurement, University of Linz, Austria Lines: 38 Message-ID: <326CE4F3.5D28@jk.uni-linz.ac.at> References: <326BE714 DOT 3019E999 AT mnar DOT tky DOT hut DOT fi> NNTP-Posting-Host: sensor4.emt.uni-linz.ac.at Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Tero Parvinen wrote: > I can't get djgpp to recognize static member variables. If I do a > 'gcc -c file.cc' everything seems to run fine, but if I try to link the > object files, I get messages complaining about undefined references. > class CTest > { > public: > static int a; > static void SSetA(int p); > void SetA(int p); > int GetA(); > }; > stest.cc(.text+0x7): undefined reference to `CTest::a' > What's wrong here? Is it a bug or am I doing something wrong? static members of classes are just defined in the class, but has to be declared outside the class. Add static int CTest::a; outside the class-definition to create the variable. If you want, you can init it as well at this place (I think you want to do this with your call 'CTest::SSetA(1)' in main) using static int CTest::a=1; Roland +---------------------------------------+---------------------------+ I Roland Exler I EMAIL: I I Universitaet Linz I R DOT Exler AT jk DOT uni-linz DOT ac DOT at I I Institut fuer Elektrische Messtechnik I I I Altenbergerstr. 69 I Phone: I I A-4040 Linz, AUSTRIA I + 43 732 2468 9205 I +---------------------------------------+---------------------------+