The problem here is that I get a compiler error saying that it cannot make the assignment nl = B->nextList; since nextList is a list object and nl is a newList object.
I would probably declare 'B' and 'nl' to be of type 'list *' rather tan of type 'newList *', but this idea requires that you also add a 'no-op' virtual destructor to the 'list' class. If you don't, your ~newList function will never get called.