delorie.com/archives/browse.cgi | search |
From: | Roland Exler <R DOT Exler AT jk DOT uni-linz DOT ac DOT at> |
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 |
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 +---------------------------------------+---------------------------+
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |