C++ 如何为ASCII码[C+;+;]初始化静态常量字符数组
我想在构造函数中用ASCII码初始化静态常量字符数组,下面是我的代码: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',
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)
不是构造函数。通过声明没有返回类型且与类同名的函数来声明构造函数。此外,字符串不应用作通用变量类型。此处建议使用枚举。