Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!G.OSWEGO.EDU!dl
From: dl@G.OSWEGO.EDU (Doug Lea)
Newsgroups: gnu.g++
Subject: problems with genclass
Message-ID: <8909281301.AA20359@g.oswego.edu>
Date: 28 Sep 89 13:01:07 GMT
References: 
Sender: daemon@tut.cis.ohio-state.edu
Reply-To: dl@oswego.oswego.edu
Distribution: gnu
Organization: GNUs Not Usenet
Lines: 32


> We've been unhappy with the classes generated by genclass because each
> type needs to be separately generated, including the entire
> ... 
 
First, please use bug-lib-g++ for libg++-related questions. (There is
no info-lib-g++, just use the bug list.)

Possibly the best solution in your case would be to

    1) have all your classes be derived from a common base, that
        includes a virtual int compare(Base* b);

    2) Have all your containers be of Base*'s (suitably typedef'ed)

    3) Edit the CMP(a, b) macro to call a->compare.

And/Or similarly for the EQ macros, etc.


This gets you heterogenous containers. If you want homogenous
containers, then you probably want to live with multiple implementations.

The main disadvantage of the current container library is that you can't
readily set things up so that you can have subclasses of Set, each of
which shares the basic Set code but operates on pointers of an
*unrelated* different type.

I don't think that full C++ support for generics will happen in the
near future.

-Doug