是否将枚举类型作为参数传递?C++
例如,我在一个函数中创建了一个枚举,并将它们保存在动物类型的数组中,在本例中只输入cow值,然后我想将该数组作为参数传递到function2中,我该怎么做是否将枚举类型作为参数传递?C++,c++,enums,C++,Enums,例如,我在一个函数中创建了一个枚举,并将它们保存在动物类型的数组中,在本例中只输入cow值,然后我想将该数组作为参数传递到function2中,我该怎么做 void function1() { enum animals{cow,cat,dog}; animals array[3]; for(int i=0;i<3;i++) { array[i]=cow; } function2(array); } void func
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
}
您可以将数组强制转换为int数组并传入:
function2((int*)array);
但是函数2将不知道如何解码枚举。如果要跨多个函数使用枚举,则需要将其定义为全局函数或两个函数都可以看到的其他位置。枚举定义必须对两个函数都可见。例如:
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);
}
例如,我在一个函数中创建一个枚举。。。您可能需要了解作用域以及如何使用参数删除和实现函数。要使您的动物类型在两个函数中都可用,它必须对两个函数都可见,这意味着它不能在其中任何一个函数中定义。另外,C++没有数组参数;传递一个指向第一个元素function2array的指针隐式执行此操作,这意味着您需要显式传递长度,或者使用容器类vector、array等。;我不知道哪一个最好。@Ben,这是个C问题;C++对int的选择更好的选择仍然是个坏主意。int类型和animals可能大小不同。而且您的描述仍然提到对数组类型进行强制转换。我建议删除这个答案的前两行;使枚举类型对两个函数都可见是唯一合理的解决方案。这会导致未定义behaviour@AnT您可以强制转换对数组类型的引用