avoncampe@ant.enet.dec.com (Alfred von Campe) (08/17/89)
Posted for a friend who currently doesn't have access to the net: -------------------------------------------------------------------------------- OK, I've run into a problem, no doubt easily solved, but it has eluded me for three days now. 1) I've declared a subclass of CScooterSamplePane (which is a subclass of CPanorama - See the Think C Class Library): struct CScooterSampleDial : CScooterSamplePane{ /* Class Declaration */ /* Instance Variables */ Point theStart, theEnd; /* Methods */ int Init( /* initialize the dial */ Point center, Point end, int length, int zeroOffset, double scale ); int Create( /* draw the pointer*/ int value ); int Update( /* update position*/ int delta ); } 2) I define the Methods: int CScooterSampleDial::Init( /* initialize pointer position values */ Point center, Point end, int length, int zeroOffset, double scale) { ... theStart.h = 50; theStart.v = 50; theEnd.h = 150; theEnd.v = 150; ... } int CScooterSampleDial::Create( /* create/display pointer at 1st position*/ int value) { ... MoveTo(theStart.h,theStart.v); LineTo(theEnd.h, theEnd.v); ... } int CScooterSampleDial::Update( /* update the pointer */ int value) { ... } 3) finally I Declare an instance and send some messages to the ...Dial object: ... CScooterSampleDial *theDial; /* declare an instance */ ... theDial = new(CScooterSampleDial); /* create an instance*/ theDial->Init(center, end, 15, 1, 1.0); /* send the configuration*/ theDial->Create(35); /* make the pointer*/ /* of course large chunks of irrelevant code have been omitted */ The Problem: When the Init object is finished, theStart and theEnd points are properly assigned as described in the Init method above. When I send to the Create method, theStart and theEnd are set to 0 for each member of those two Point structs. In the Think C Manual on Page 188 (Ch. 15 - Using Objects in Think C) it states that there is an implicit declaration register CLASS *this; and within a method definition one can omit the 'this->' from an instance variable. However, whether or not I use this->theStart.h or theStart.h in the Create method, I do not get the values established in the Init method. I've been through Chapters 14,15,&16 of the manual and have tried many different variations, to no effect as of yet. Any ideas ?? Scooter -------------------------------------------------------------------------------- Easy enough, Rich? Alfred +-------------------------------------------------------+--------------------+ |DECnet: ANT::AVONCAMPE |Work: (508) 480-5704| | uucp: {decvax,ucbvax,allegra}decwrl!dec-ant!avoncampe|Home: (508) 365-3982| | ARPA: avoncampe@ant.enet.dec.com +--------------------+ +-------------------------------------------------------+ I'd rather be | | Thought for today: Why is common sense so uncommon? | FLYING | +-------------------------------------------------------+--------------------+
avoncampe@ant.enet.dec.com (Alfred von Campe) (08/29/89)
Digital has been having some problems with its gateway (DECWRL) recently. I'm reposting this since I don't know if it made it out the first time. From: avoncampe@ant.enet.dec.com (Alfred von Campe) Subject: Problem with Instance Variables in THINK C 4.0 Date: 17 Aug 89 01:21:21 GMT Posted for a friend who currently doesn't have access to the net: -------------------------------------------------------------------------------- OK, I've run into a problem, no doubt easily solved, but it has eluded me for three days now. 1) I've declared a subclass of CScooterSamplePane (which is a subclass of CPanorama - See the Think C Class Library): struct CScooterSampleDial : CScooterSamplePane{ /* Class Declaration */ /* Instance Variables */ Point theStart, theEnd; /* Methods */ int Init( /* initialize the dial */ Point center, Point end, int length, int zeroOffset, double scale ); int Create( /* draw the pointer*/ int value ); int Update( /* update position*/ int delta ); } 2) I define the Methods: int CScooterSampleDial::Init( /* initialize pointer position values */ Point center, Point end, int length, int zeroOffset, double scale) { ... theStart.h = 50; theStart.v = 50; theEnd.h = 150; theEnd.v = 150; ... } int CScooterSampleDial::Create( /* create/display pointer at 1st position*/ int value) { ... MoveTo(theStart.h,theStart.v); LineTo(theEnd.h, theEnd.v); ... } int CScooterSampleDial::Update( /* update the pointer */ int value) { ... } 3) finally I Declare an instance and send some messages to the ...Dial object: ... CScooterSampleDial *theDial; /* declare an instance */ ... theDial = new(CScooterSampleDial); /* create an instance*/ theDial->Init(center, end, 15, 1, 1.0); /* send the configuration*/ theDial->Create(35); /* make the pointer*/ /* of course large chunks of irrelevant code have been omitted */ The Problem: When the Init object is finished, theStart and theEnd points are properly assigned as described in the Init method above. When I send to the Create method, theStart and theEnd are set to 0 for each member of those two Point structs. In the Think C Manual on Page 188 (Ch. 15 - Using Objects in Think C) it states that there is an implicit declaration register CLASS *this; and within a method definition one can omit the 'this->' from an instance variable. However, whether or not I use this->theStart.h or theStart.h in the Create method, I do not get the values established in the Init method. I've been through Chapters 14,15,&16 of the manual and have tried many different variations, to no effect as of yet. Any ideas ?? Scooter -------------------------------------------------------------------------------- Alfred +---------------------------------------------------------+--------------------+ | Easynet: ANT::AVONCAMPE |Work: (508) 480-5704| | uucp: {decvax,ucbvax,allegra}decwrl!dec-ant!avoncampe|Home: (508) 365-3982| |Internet: avoncampe@ant.enet.dec.com +--------------------+ +---------------------------------------------------------+ I'd rather be | | Thought for today: Why is common sense so uncommon? | FLYING | +---------------------------------------------------------+--------------------+ | Disclaimer: My employer doesn't even know I have opinions | +------------------------------------------------------------------------------+