RAD Studio
ContentsIndex
PreviousUpNext
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:

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!