RAD Studio |  |

Assignment To Enum Types

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:

Copy Code

    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:

Copy Code

    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!