gpt4 book ai didi

c++ - 如何用 C++ 初始化一个 const char 数组数据成员?

转载 作者:太空狗 更新时间:2023-10-29 19:53:38 37 4
gpt4 key购买 nike

我有一个与 C++ 类成员初始化相关的问题。以下代码说明了我的问题:

class ABCD
{
public:
ABCD():ObjNum(3){};
~ABCD() {};
static const unsigned char getByte[8];
const int ObjNum;


};

const unsigned char ABCD::getByte[8] = {
'a','b','c','d','e','f','g','h'
};

int main()
{
ABCD test;
cout<<test.getByte[3]<<endl;


return 0;
}

上面的代码工作得很好,但是现在如果我不将 getByte[8] 设置为静态的,我怎么能初始化这个类呢?我尝试过这种方式,但失败了:

class ABCD
{
public:
ABCD():ObjNum(3),getByte('a','b','c','d','e','f','g','h')
{

};
~ABCD() {};
const unsigned char getByte[8];
const int ObjNum;


};



int main()
{
ABCD test;
cout<<test.getByte[3]<<endl;


return 0;
}

我得到的错误如下:

 error C2536: 'ABCD::ABCD::getByte' : cannot specify explicit initializer for arrays

我知道我收到错误的原因,但我不知道如何解决。任何的想法?谢谢!

最佳答案

在 C++11 中你可以这样初始化它:

ABCD() : ObjNum(3), getByte{'a','b','c','d','e','f','g','h'} {}

不过,如果您要使用 C++11,最好使用 std::array正如其他人在评论中所建议的那样。然后您可以像这样定义数组:

const std::array<unsigned char, 8> getByte;

并以这种方式初始化它(注意双括号):

ABCD() : ObjNum(3), getByte{{'a','b','c','d','e','f','g','h'}} {}

关于c++ - 如何用 C++ 初始化一个 const char 数组数据成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12050559/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com