Hi, what's wrong with that? Look at the following code where the empty class A has been added. When you run this, you get the same sizeof for both classes A and B. The reason for that is that the static data member is common to all instances of the class B and is sitting in the separate static address space of the executable. That's why it does not contribute to the size of the class B. It's not a bug. I'm not a rootcint guru, but I suppose it can generate proper streamers for such a class. Radovan ------------------------ cut here -------------------------- class A { public: A(); }; A::A() {;} class B { public: B(); private: static long int a; }; long int B::a=0; B::B() {;} int main(int argc, char **argv) { A a[100]; printf("sizeof A=%d a=%d \n",sizeof(A),sizeof(a)); B b[100]; printf("sizeof B=%d b=%d \n",sizeof(B),sizeof(b)); return 1; } ------------------------ cut here -------------------------- Mikhail Oukhanov wrote: > > Dear C++Root'ers, > > Have you ever met the thing like this? > How should it be handled in a streamer? > Any hint is appreciated. > > Regards, Mikhail Ukhanov. > > ------------------------------------------------ > ukhanov@rampexa:~/mwpc$ cat qq.cxx > > #include <stdio.h> > > class B { > public: > B(); > private: > static long int a; > }; > > long int B::a=0; > > B::B() {;} > > int main(int argc, char **argv) > { > B b[100]; > printf("sizeof B=%d b=%d \n",sizeof(B),sizeof(b)); > return 1; > } > > ukhanov@rampexa:~/mwpc$ g++ qq.cxx -o qq > ukhanov@rampexa:~/mwpc$ ./qq > > sizeof B=1 b=100 > > ukhanov@rampexa:~/mwpc$ g++ -v > Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.2/specs > gcc version 2.95.2 20000220 (Debian GNU/Linux) > > ukhanov@rampexa:~/mwpc$ uname -a > Linux rampexa 2.2.17 #9 Tue Jan 30 17:54:11 MSK 2001 i686 unknown > -----------------------------------------------
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:48 MET