The rules for expressions involving enum types have been made stricter. The compiler enforces these rules with error messages if the compiler switch -A is turned on (which means strict ANSI C++).
Assigning an integer to a variable of enum type results in an error:
enum color { red, green, blue }; int f() { color c; c = 0; return c; }
The same applies when passing an integer as a parameter to a function. Notice that the result type of the expression flag1|flag2 is int:
enum e { flag1 = 0x01, flag2 = 0x02 }; void p(e); void f() { p(flag1|flag2); }
To make the example compile, the expression flag1|flag2 must be cast to the enum type: e (flag1|flag2).
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
What do you think about this topic? Send feedback!
|