从int转换为枚举

use*_*299 2 c++

我已声明以下枚举:

  enum periods {one, five, ten, fifteen, thirty};
Run Code Online (Sandbox Code Playgroud)

现在我想在主函数中将它作为命令行参数传递.

int main(int argc, char* argv[]) {

  periods mp;
  if (argc == 2) {
      std::string min_prd(argv[2]);
      mp=atoi(min_prd.c_str());
 }
Run Code Online (Sandbox Code Playgroud)

并且编译器抱怨:

error: invalid conversion from ‘int’ to ‘periods’
Run Code Online (Sandbox Code Playgroud)

我做了atoi(),因为我认为枚举是一个int - 如何修复我的代码?

Pub*_*bby 6

你必须明确地施展它:

mp=static_cast<periods>(atoi(min_prd.c_str()));
Run Code Online (Sandbox Code Playgroud)