[comp.lang.c++] Getting info to new

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