home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!elroy.jpl.nasa.gov!usc!news.bbn.com!kirin!mfausett
- From: mfausett@bbn.com (Mark Fausett)
- Newsgroups: gnu.gcc.help
- Subject: static instance variables in class not visible
- Date: 31 Jul 92 18:28:21 GMT
- Lines: 53
- Distribution: world
- Message-ID: <mfausett.712607301@kirin>
- NNTP-Posting-Host: kirin.bbn.com
-
- Curious; If I declare a static instance variable in a class, for example:
- //class.H:
- class Stat {
- protected:
- int nonStat;
- static int isStat;
- public:
- Stat(int n, int s){
- nonStat=n;
- isStat=s;
- }
- int getStatVar();
- void setStatVar(int val);
- };
-
- and then in class.C attempt to use it:
-
- //class.C
- #include "class.H"
-
- int Stat::getStatVar(){
- return isStat;
- }
-
- void Stat::setStatVar(int val){
- isStat = val;
- }
-
- #include <iostream.h>
- main(int argc, char *argv[]){
- Stat j(1,2);
- Stat k(1,5);
- cout << j.getStatVar() <<endl;
- j.setStatVar(4);
- cout << k.getStatVar() <<endl;
- }
-
- I get linking problems like this:
-
- gcc -o class class.C -lg++ld: Undefined symbol
- __4Stat$isStat
- collect: /usr/bin/ld returned 2 exit status
-
- Compilation exited abnormally with code 1 at Fri Jul 31 11:35:32
-
- In particular, I'm not use GNU ld. This is on a Sun4m, but same thing
- happens on my NeXT as well.
- Do I misunderstand static class variables, will it work with GNU ld, or ???
-
- Thanks!
-
- Mark Fausett
- mfausett@bbn.com
-