【问题标题】:C++ typecast constant string within case案例中的 C++ 类型转换常量字符串
【发布时间】:2015-04-17 07:11:03
【问题描述】:

我想使用我程序中已经定义的字符串字符 在开关盒内。

澄清一下,我的定义是这样的

#define COMMAND "c"

在不同的部分,我想在案例陈述中使用这个符号。

switch ( sign )
{
  case COMMAND:
  break;
  ....
}

我知道这是不允许的,但是有什么方法可以将它转换为一个字符(无论如何它只是一个字符)?我面临的问题是,编译器因此抱怨 它不再是恒定的......

谢谢!

【问题讨论】:

    标签: c++ string casting case


    【解决方案1】:

    你为什么不把它定义为你想要的?像这样

    #define COMMAND 'c'
    

    但是等等……应该尽可能避免使用宏,你以前没听说过吗?所以也不要那样做。改为这样做:

     constexpr char command = 'c';
    

    或者如果你有多个命令,那么枚举可能会更好:

     enum class command_type : char
     {
        command0 = 'c',
        command1 = 'd',
        command2 = 'e',
        //..
     };
    

    【讨论】:

    • 原因,但更改定义会导致我想避免的更改的鼠尾。
    • 如果可能的话,这是值得的。
    猜你喜欢
    • 2020-07-13
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2012-02-15
    • 2014-08-22
    相关资源
    最近更新 更多