Re: RTTI basics
Rune Allnor wrote:
Hi all.
I would like to use a class hierarchy where one const data field
holds a class-specific value. I would like to do something like
The term "data field" is a bit unspecific. Do you mean a member (which may
require storage for each instance of the class) or a class variable
(which would
exist exactly once)? As you state that the value is specific to the
class, you
probably want the second one.
class base{public; static const int n};
class a : public base{public:};
class b : public base{public:};
const int a::n = 1; // These don't compile: "n is not a member of
class a. "
const int b::n = 2;
I can get what I want, but I have to do it like this:
class base {public:};
class a : public base{public: static const int n;};
class b : public base{public: static const int n;};
const int a::n = 1;
const int b::n = 2;
Oh, I see what you want to get (some kind of ID that comes along with each
sub-class of base).
While this works, I don't like the multiple declarations of n
in each class derived from the base class.
I am afraid that you'll have to live with this. As the constant value
should be
static, you cannot use the inheritance mechanism of non-static variables
and
methods.
Can this sort of thing be done by declaring a const member
of the base class?
Regards,
Stuart
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]