Enum "Inheritance"?

%u wfunction at hotmail.com
Wed Feb 23 14:52:11 PST 2011


I have a question on enum "inheritance" -- I'm wondering if what's happening below is a bug or by
design?

I have code like this:

enum AccessMask { GenericRead = 0x80000000 }
enum FileAccess : AccessMask { ReadData = 1 } //Errors
void foo(FileAccess a) { /*Do something*/ }
void bar() { foo(AccessMask.GenericRead); } //Errors

I get two errors:

1. Inside FileAccess, I get an error with the assignment, telling me that it can't work implicitly.
If instead of "ReadData = 1" I write "ReadData = cast(AccessMask)1", it works fine, but it's a pain.

2. bar() doesn't compile, because it's passing a less specialized value to a more specialized one.
While I understand why this wouldn't work from an actual _object_ inheritance perspective, I don't
see why this doesn't work in the case of enums -- after all, isn't the subclass supposed to contain
every member member of the superclass? Is this by design, and is there a neat solution?


Thanks!


More information about the Digitalmars-d mailing list