adiseker@potomac.ads.com (Andrew Diseker) (09/27/90)
I have just had a problem in using an instance of a direct object in the method of an indirect object. This is part of the method code: void IndirectObj::aMethod() { DirectObj *tempObj; : tempObj = new( DirectObj ); tempObj->someMethod(); <<< the debugger stops here with "odd address trap" : delete( tempObj ); } where someMethod() is declared and defined in the DirectObj class definition and code. I changed DirectObj's definition from direct to indirect, and had no further problems. Shouldn't I be allowed to mix types? I do kind of like to have the choice. For example, if tempObj is small, and nothing I do to it will move memory, I want to eliminate the overhead involved with dereferencing handles. -- Andrew Diseker >Advanced Decision Systems >UUCP: sun!sundc!potomac!adiseker >Internet:adiseker@potomac.ads.com "Indeed, many respected computer scientists have difficulty with left and right even though they can manage the logical con- nectives and can be left to write left to right the right Boolean operations"
siegel@endor.uucp (Rich Siegel) (09/27/90)
In article <9200@potomac.ads.com> adiseker@potomac.ads.com (Andrew Diseker) writes: >void IndirectObj::aMethod() >{ > DirectObj *tempObj; > : > tempObj = new( DirectObj ); > tempObj->someMethod(); <<< the debugger stops here with "odd address trap" > : > delete( tempObj ); >} > > where someMethod() is declared and defined in the DirectObj class >definition and code. I changed DirectObj's definition from direct to >indirect, and had no further problems. Shouldn't I be allowed to mix When using direct classes, the responsibility for storage management is yours - you can't use new() and delete(). You might try something like: void IndirectObj::method() { DirectObj *tmp; tmp = NewPtr(sizeof DirectObj); tmp->itsMethod(); DisposPtr(tmp); } The problem does not lie in your mixing of class types; it's that you need to allocate storage for direct classes yourself. R. Rich Siegel Software Engineer Symantec Languages Group Internet: siegel@endor.harvard.edu UUCP: ..harvard!endor!siegel If you have telekinetic powers, raise my hand.