c++ - 是否可以将整个枚举集作为参数传递?

标签 c++ enums

我知道您可以使用枚举的一部分作为函数的参数。我的问题是您可以使用整个枚举作为参数吗?

对于枚举:

enum exampleEnum {ONE,TWO,THREE}

我指的是部分枚举:

function example(exampleEnum value){}

function example(ONE);

整个枚举是:

function example(enum value){}

function example(exampleEnum);

我想我想问的是我可以像传递数组一样传递枚举吗?至少这是我想问的。

编辑

我想要达到的效果是在多个类和子类之间共享一个枚举,而无需在我希望使用它的每个类/子类中重新定义它。我希望传递这些值而不是使用某种形式的全局变量.

编辑的编辑

更具体地说...我使用枚举值作为关联数组的一种形式。

enum attribute{STR,DEX,CON,INT,WIS,CHA};
short int charAttributes[6];

charAttributes[STR] = sumValue;
charAttributes[DEX] = sumValue;
charAttributes[CON] = sumValue;
charAttributes[INT] = sumValue;
charAttributes[WIS] = sumValue;
charAttributes[CHA] = sumValue;

我想要的是传递枚举的完整名称、值以及所有要作为参数传递的内容。我想传递枚举以保留枚举名称和值以继续使用它们。

最佳答案

exampleEnum 是一种类型,而不是一个值。 C++ 将类型传递给函数的方法是使用模板:

#include <iostream>
#include <ostream>
#include <typeinfo>
using namespace std;

enum exampleEnum {ONE,TWO,THREE};

template<typename T>
void example()
{
    cout << typeid(T).name() << endl;
}

int main()
{
    example<exampleEnum>();
    return 0;
}

关于c++ - 是否可以将整个枚举集作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13095921/

相关文章:

c++ - 如何决定是否使用超线程?

java - 在 Spring Boot Controller 中反序列化枚举忽略大小写

c++ - 枚举是否应该从 dll 中导出?

database - 数据库字段中的枚举存储

Java:是否允许在运行时更改 Enum 字段?

java - 根据枚举验证 JSON 字段

c++ - 在 Windows 上打印不工作

c++ - 什么时候使用以及c++中clog和cerr的区别

c++ - 成员变量的类模板实参推导

c++ - C++ 中 float_max + 1 是如何定义的?