[comp.lang.c++] Tricky

ngo@tammy.harvard.edu (Tom Ngo) (09/26/90)

I would appreciate any advice about the following situation.

I have three classes, which for anonymity's sake I will call B, B1 and B2:

    class B { ... };
    class B1 : private B { ... };
    class B2 : private B { ... };

and I have another class, Collector, with a method that memorizes B's:

    Collector::memorize( B *p )
    {
	...
    }

I want the method memorize() to maintain a linked list (or whatever)
consisting of all the B's with which memorize() has been invoked.  I
want the Collector class to contain complete copies of those B's, i.e.
I want the elements of this list to survive even after the following
sequence:

    Collector c;
    B1 *b1 = new B1(...);
    c.memorize(b1);
    delete b1;

This means that inside Collector::memorize() I must invoke "new B"...
but that is obviously not going to be enough, since a B cannot hold
all of the information in, say, a B1.  Are there any suggestions on
how to handle this?

Please respond via email; I will summarize.  Thanks in advance.
--
  Tom Ngo
  ngo@harvard.harvard.edu
  617/495-1768 lab number, leave message