This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: I'm sorry, but this is unacceptable (union members and ctors)


On Fri, Jun 15, 2007 at 04:25:52PM -0700, michael.a wrote:
> I'm afraid I have a fairly major project which requires a Linux port. The
> problem is, development has been put off for a while because GCC lacks any
> means or work around which permits nesting ctors inside a union. 

Rather, you're relying on a nonportable compiler extension.  No matter,
you have a problem to fix.  I guess there's some reason why you can't
use base classes and derived classes to store your data variants; perhaps
it's because you want to put them into an array?

One possible workaround is to use placement new.  As I understand your
motivation, you want to be able to construct one of several types of
objects in the same fixed-size space that is large enough to hold any of
them.  The union is replaced by a class whose data member is a char array
of sufficient size, and you can then construct sub-objects of whatever
type you want in the char array with placement new.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]