:The problem:

enum:

``````enum Choice
{
A,
B,
C
}``````

I would like to pass it to function like that:

``````void function(Choice.A | Choice.B)
{
//how do I determine what was passed here??
//how to handle two or more values??
}``````

## All 6 Replies

Look up how to use a switch statement.

Look up how to use a switch statement.

First of all your enum must have values which equal to x^2 (1, 2, 4, 8, 16, 32, etc.).

``````enum Choice
{
A = 1,
B = 2,
C = 4
}
``````

Having the such enumeration your method can look as the following does:

``````void function(Choice choice)
{
if ((choice & Choice.A) != 0)
{
// It's A.
}

if ((choice & Choice.B) != 0)
{
// It's B.
}
}
``````

Thanks for help!!!

most easy way to do such thing use binary idea as Askold told you in his post: where
1: 0001
2: 0010
3: 0011
and so on...
then do your comparison to know each value of enumerator you want but be careful in such number like 4: 0011 when you and with it can retrieve bot A, and B in such case use number in such way so you can distinct between
A: 0000 0001 = 1
B: 0000 0010 = 2
C: 0000 0100 = 4

Thanks!

I have already found another page where it is explained, but THANKS!

Why not use a switch statement? Make a variable that can contain the value of your Enum, pass that as a parameter of the method, and then use a switch statement to evaluate the value of that variable in the method... Why would that not work?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.