ericr@hpvcfs1.HP.COM (Eric Ross) (08/21/90)
I am creating a set of classes the will access the Network Computing System (NCS) and a signal handler needs to be initialized exactly one time. Is there a way for an object to know that it is the first instantiation of a class? My gut feel is that there is a way with static members, but I don't quite have the right recipe. Thanks, Eric Ross Hewlett Packard, Vancouver Division ericr@vcd.hp.com
dwithers@ncratl.Atlanta.NCR.COM (Dave Witherspoon) (08/21/90)
In article <1120006@hpvcfs1.HP.COM>, ericr@hpvcfs1.HP.COM (Eric Ross) writes: > I am creating a set of classes the will access the Network Computing > System (NCS) and a signal handler needs to be initialized exactly one time. > > Is there a way for an object to know that it is the first instantiation of > a class? My gut feel is that there is a way with static members, but I don't > quite have the right recipe. You're on the right track. What I have done is provide for a static class counter, and every trip through the constructor I bump it check for a value of 1. Although this seems to be of a "manual" nature, it works. -------------------------------David Witherspoon------------------------------- David.Witherspoon@Atlanta.NCR.COM | NCR E&M Atlanta: (404) 623-7713 | Visualize Whirled Peas MY OPINIONS...ALL MINE!!! |
ericr@hpvcfs1.HP.COM (Eric Ross) (08/21/90)
I received several responses (next day; talk about results!!). Here is one that appears to be in agreement with most of them. Thanks to all that responded. Eric Ross ------------------------------------------ In MyObj.h, say class MyObj { private: static int numObjs; ... public: MyObj(); ... } In MyObj.cc, say #include "MyObj.h" int MyObj::numObjs = 0; MyObj::MyObj() { if (numObjs == 0) { // I am the first object ... } else { // I am not the first } numObjs++; } -- Joe Buck jbuck@galileo.berkeley.edu {uunet,ucbvax}!galileo.berkeley.edu!jbuck