andersnb@cmcl2.NYU.EDU (Brian Anderson) (08/11/89)
I have a question about static class members. I'm not sure if I don't understand there use or if I have found some compiler bug. Here goes: I have two simple files and a header file as follows: --test.h---- class what { public: static int hold; friend int k(int); what(int i) {hold = i;}; inline int itis() {return hold;}; }; ------------ --test_1.cc- #include <stream.h> #include "test.h" extern int j(int); extern int k(int); main(){ what main_what(3); k(5); cout << main_what.itis() << " " << j(4) << " "<< k(5) << "\n"; } ------------ --test_2.cc- #include "test.h" int j(int i) { what j_what(i); return j_what.itis(); } int k(int i) { what::hold = i; return what::hold; } ----------- I tried this piece of code, both with "hold" as a private member and as a public member (this is why k() was declared as a friend). I would think that the output should be "5 5 5" since the call to k() would update the single static member. When "hold" was a private or public member the output was "4 4 5". Am I misusing static members? Please reply by email because our news machine is sick, Thanks, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Brian G. Anderson | NYU Ultracomputer Research Project ||| 715 Broadway Rm. 1006 ||||| New York, NY 10003 ||||| (212) 998-3346 --- //\ --- arpa: andersnb@cmcl2 ----/ \---- uucp: {ihnp4,seismo}!cmcl2!andersnb ---- ----