【问题标题】:How to initialize static const char array for ASCII codes [C++]如何为 ASCII 代码初始化静态 const char 数组 [C++]
【发布时间】:2011-02-11 07:10:12
【问题描述】:

我想在构造函数中使用 ASCII 代码初始化一个静态 const char 数组,这是我的代码:

class Card
{ 
public:
    Suit(void)
    {    
        static const char *Suit[4] = {0x03, 0x04, 0x05, 0x06}; // here's the problem
        static const string *Rank[ 13 ] = {'A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'}; // and here.
}

但是我得到了很多错误说明

  • 'initializing' : 无法从 'char' 转换为 'const std::string *'

  • 'initializing' : 无法从 'int' 转换为 'const std::string *'

请帮助我!非常感谢。

【问题讨论】:

  • char 转换为const std::string* 是您最不必担心的事情
  • Suit(void) 不是构造函数。您可以通过声明一个没有返回类型且与类同名的函数来声明构造函数。
  • 此外,字符串不应用作通用变量类型。此处推荐枚举。

标签: c++ casting


【解决方案1】:

你正在初始化一个字符数组,所以你想要:

static const char Suit[] = {0x03, 0x04, 0x05, 0x06};
static const char Rank[] = {'A', '2', ...};

您使用的表单是声明字符串数组,然后用单个字符串初始化它们。如果您确实希望 Rank 成为字符串数组,则初始化程序需要用双引号引起来:

static const char* Rank[] = {"A", "2", ...};

或:

static const std::string Rank[] = {"A", "2", ...};

【讨论】:

    【解决方案2】:

    字符数组的类型为const char[]。你所拥有的,const char*[] 是一个指针数组。

    【讨论】:

      猜你喜欢
      • 2011-04-18
      • 1970-01-01
      • 1970-01-01
      • 2013-04-13
      • 1970-01-01
      • 2016-11-21
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多