C++ 如何为ASCII码[C+;+;]初始化静态常量字符数组

C++ 如何为ASCII码[C+;+;]初始化静态常量字符数组,c++,casting,C++,Casting,我想在构造函数中用ASCII码初始化静态常量字符数组,下面是我的代码: 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',

我想在构造函数中用ASCII码初始化静态常量字符数组,下面是我的代码:

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.
}
然而,我在陈述这一点时犯了很多错误

  • “正在初始化”:无法从“char”转换为“const std::string*”

  • “正在初始化”:无法从“int”转换为“const std::string*”


请帮帮我!非常感谢。

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

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

您只初始化了一个字符数组,因此需要:

static const char Suit[] = {0x03, 0x04, 0x05, 0x06};
static const char Rank[] = {'A', '2', ...};
您正在使用的表单是声明字符串数组,然后用单个字符串初始化它们。如果确实希望
Rank
成为字符串数组,则初始值设定项需要使用双引号:

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


您正在初始化一个字符数组,因此需要:

static const char Suit[] = {0x03, 0x04, 0x05, 0x06};
static const char Rank[] = {'A', '2', ...};
您正在使用的表单是声明字符串数组,然后用单个字符串初始化它们。如果确实希望
Rank
成为字符串数组,则初始值设定项需要使用双引号:

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


char
转换为
const std::string*
是您最不用担心的事
Suit(void)
不是构造函数。通过声明没有返回类型且与类同名的函数来声明构造函数。此外,字符串不应用作通用变量类型。这里建议使用枚举。从
char
转换为
const std::string*
是您最不用担心的
Suit(void)
不是构造函数。通过声明没有返回类型且与类同名的函数来声明构造函数。此外,字符串不应用作通用变量类型。此处建议使用枚举。