gpt4 book ai didi

c++ - 无法使用类型为 'const signed char *' 的左值初始化类型为 'const char [X]' 的成员子对象

转载 作者:太空狗 更新时间:2023-10-29 20:21:00 24 4
gpt4 key购买 nike

我有以下代码:

typedef       signed char         Char;

static const struct MyStruct
{
const Char* str;
// Other fields
}
myList[] =
{
{"none", /* Other fields */},
{"main", /* Other fields */},
}

但是我有编译错误:

Cannot initialize a member subobject of type 'const Char *' (aka 'const signed char *') with an lvalue of type 'const char [X]

X 是字符串长度

char替换Char没问题,但是如何使用signed char呢?

最佳答案

"none" ,例如是 const char[5]类型。在某些情况下,这可能衰减const char* .

不管是否charsignedunsigned在你的平台上,char , signed char , 和 unsigned char总是不同的类型。

C++ 不允许直接衰减 const char[N]键入除 const char* 以外的任何内容(或指向 typedefconst char* 的指针),因此在您的情况下,需要发出诊断。

在 C++ 中,您还有许多其他选择:std::string在您的案例中是显而易见的选择。

检查 char 的类型你有,使用

std::numeric_limits<char>::is_signed

来自 <limits> .

关于c++ - 无法使用类型为 'const signed char *' 的左值初始化类型为 'const char [X]' 的成员子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46685575/

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