[comp.lang.c++] accessing static class members

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              ----   ----