xjam@cork.berkeley.edu (The Crossjammer) (06/20/91)
I might need some schooling about this, but I find it really inconvenient that there is no way to get the same information to an allocator (operator new) and an initializer (constructor) of an object. For example, I have to do the following to get allocation from a fixed pool of constants class FixnumCell { Fixtype x; FixnumCell(Fixtype q); void *operator new(int size, Fixtype q); }; inline FixnumCell::FixnumCell(Fixtype q) { if (// q in constant range) return; // This only works because I know what the allocator is // going to do in this case x = q; } void *FixnumCell::operator new(int size, Fixtype q) { if (// q in constant range) // find constant and return it } main () { FixnumCell *a = new (20) FixnumCell(20); // Should get preallocated constant FixnumCell *b = new (2ZILLION) FixnumCell(2ZILLION); // Need a new cell } This is also an "abuse" of what I perceive as the original use of overloading new, which was for object placement. Not that I know how to fix the problem, but it seems that allocation of space *is* part of an object's initialization, so why not let the constructor handle that as well. If there is a "correct" way to handle the problem then please let me know. Just blowing off some steam. -- They can't come on and play me in prime time, |Crossjammer ...... OUT! Cause I know the time, cause I'm gettin' mine. |xjam@yew.berkeley.edu I get on the mix late in the night... <-------------------PUBLIC ENEMY