传递枚举类型作为参数? C ++

时间:2015-06-03 17:34:48

标签: c++ enums

例如我在一个函数中创建一个枚举并将它们保存在一个动物类型的数组中,在这种情况下只是牛的值,然后我想将该数组作为参数传递给function2,我该怎么做?

void function1()
{
    enum animals{cow,cat,dog};

    animals array[3];

    for(int i=0;i<3;i++)
    {
        array[i]=cow;
    }

    function2(array);
} 

void function2()
{
    // blablabla
}

2 个答案:

答案 0 :(得分:1)

enum定义必须对两个函数都可见。例如:

enum animals{cow,cat,dog};

template<size_t N>
void function2(animals (&foo)[N])
{
    cout << "Received " << N << " animals.\n";
}

void function1()
{
    animals array[3] = { cow, cow, cow };
    function2(array);
} 

答案 1 :(得分:-2)

您可以将数组转换为int数组并将其传递给:

function2((int*)array);

但是函数2将不知道如何解码你的枚举。如果要在多个函数中使用枚举,则需要将其定义为全局或两个函数都可以看到的其他位置。