2016-12-02 36 views
1

对于一个arduino项目,我试图使用一个包含这样的代码的库。将一个int传递给一个期待枚举数据类型的函数

typedef enum 
    { 
     NOT_SPECIFIED = 0, 
     MALE = 1, 
     FEMALE = 2 
    } gender; 

,有一个功能

void findCustomer(const char* userName, gender g); 

在我自己的代码,我让用户输入通过一个网络接口这些信息,我保存的性别项作为一个int。后来,我想拨打findCustomer,但是如果我传递一个int作为第二个参数,它会给我一个错误。为了解决这个问题,有什么具体的数据类型,我应该用它来保存客户的输入,所以我可以将它传递给findCustomer

+0

'int i,switch(i)'做出选择。 – macroland

+1

是的,你可以使用开关或使用static_cast (1)如果你确定valuse传递是(0,1,2)。 – user1438832

回答

2

什么是我应该用它来保存客户输入具体的数据类型,所以我可以将它传递给findCustomer

您可以使用static_castint投你的第二个参数enum应满足findCustomer原型,这样的事情:

findCustomer(userName, static_cast<gender>(int_argument)) 
+0

谢谢!我会在6分钟内接受:) – aVC

+0

@aVC即使是标准的C型投球('(性别)int_argument')... – frarugi87

+0

@ frarugi87即使是C风格的演员阵容,C++风格演员总是首选 – artm

相关问题