: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??
}

Thanks in adv

Recommended Answers

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.