[gnu.g++] static member variables and pointers to member functions

gas@cs.nott.ac.uk (Alan Shepherd) (05/29/90)

I'm trying to use a structure containing a char* (name of type) and a
pointer to a member function.  The structure looks like:

typedef struct _parseinfo {
	char	*name;
	Boolean (Base::*proc)(const CString&);
} ParseInfo;

The class Base has a static member variable (ParseInfo lineTypes[])
which I initialise like so:

struct ParseInfo Base::lineTypes[] = {
	{ "name", Base::Name },
	{ "description", Base::Description },
	..etc..
};

AT&T treats this ok unless one of the methods is overloaded in which
case it complains like mad.  Should it do this ?  

Secondly, it would be nice to use the same structure for a subclass of
base.  Unfortunately, this seems not to be possible since the pointer
to function explicitly says Base::.  A way round this is of course to
declare any subclass method which I want to use in this way as a
virtual method of Base, but this seems a bit a tacky.  Anyone any
better ideas ?

G++ seems to treat static member variables in a different way
(possibly better !) but I haven't yet tracked down the differences.  

However, for software compatibility I'm stuck with AT&T anyway.

Help appreciated.

Alan Shepherd.