在将用户输入转换为C ++类型时,if / else语句过多

问题描述 投票:1回答:3

我有一个带有3个模板参数的模板类。

template <class T, class U, class Y>
class MyClass {};

我想通过CLI参数从用户那里获得输入,例如./cli float driver-x load

  • 第一个参数可以是floatdouble
  • 第二个参数是驱动程序名称:driver-xdriver-y,...
  • 第三个参数与动作类型有关:loadunload,...

如果要基于用户输入创建MyClass的新实例,则必须定义许多if/else语句。因为用户输入为string,所以我必须为其准备条件。因此,它将是这样的:

if (data_type == "float")
    if (driver == "driver-x")
        if (action == "load")
            MyClass<float, DriverX, Load> t;
            t......

据我所知,不可能在C ++中将类型存储在变量中。

所以,有什么方法可以改善if/else语句?类似于:

if (data_type == "float")
    //

if (driver == "driver-x")
   //

if (action == "load")
   //

MyClass<......> t;
t.....;

或其他方式?

我正在寻找一种改进这些if/else语句的方法。

c++ command-line-interface c++17
3个回答
0
投票

我认为您正在寻找类似X-宏的东西:


0
投票

您可以构建一些机制来为您执行此操作,将其提取到函数调用中。


0
投票

您可以构建一些机制来为您执行此操作,将其提取到函数调用中。

© www.soinside.com 2019 - 2024. All rights reserved.