Path: utzoo!utgpu!water!watmath!clyde!bellcore!faline!thumper!ulysses!andante!mit-eddie!ll-xn!ames!umd5!cvl!mimsy!chris
From: chris@mimsy.UUCP
Newsgroups: comp.lang.c
Subject: Re: Structure Pointer Question
Message-ID: <12412@mimsy.UUCP>
Date: 12 Jul 88 13:50:12 GMT
References: <2080@ssc-vax.UUCP>
Organization: U of Maryland, Dept. of Computer Science, Coll. Pk., MD 20742
Lines: 33

In article <2080@ssc-vax.UUCP> dmg@ssc-vax.UUCP (David Geary) writes:
>Keywords: You don't really *read* this line, do you?

(Some do!)

>  typedef union {
>		   THIS_TYPE_OF_OBJECT   *this.id;
>		   THAT_TYPE_OF_OBJECT   *that.id;
>		   ANOTHER_TYPE_OBJECT   *another.id;
>                }
>		   OBJECT_UNION;
>
>  Where, of course, THIS_TYPE_OF_OBJECT, THAT_TYPE_OF_OBJECT, etc. are
>all typedefs of structures.

This is what `void *' is for (and if you do not have `void *', `char *'
*probably* works):

	struct object {
		int	type;
		...
		void	*pointer;
	}; ...
		struct some_real_object *p = this_obj->pointer;
		p->real_data = ...;

Without `void *' this must be cast:

		struct some_real_object *p =
		    (struct some_real_object *)this_obj->pointer;
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7163)
Domain:	chris@mimsy.umd.edu	Path:	uunet!mimsy!chris