gpt4 book ai didi

c++ - ISO C++11 不允许从字符串转换为字符

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:49 27 4
gpt4 key购买 nike

根据我在这里读到的内容,你不能这样做:

char *delegates[]={"IN",NULL};

它必须是这样的,这样你就不会收到警告:

const char *delegates[]={"IN",NULL};

但是我有一些我无法更改的功能,看起来像:

void Interpreter::setBuiltIns(char *builtins[],int num  )

这个函数不会以任何方式改变数组。

如果我尝试将字符串数组传递给它:

myclass.setBuiltIns(delegates, 1);

我得到一个错误,但是如果我从 delegate删除 const 没有错误,但是我得到了 ISO 警告 .

我怎样才能保留这个函数,并在没有警告/错误的情况下将它传递给数组。

最佳答案

视情况而定。如果保证 setBuiltIns 不修改字符串,您可以const_cast const

否则,选择始终安全的路径并将文字复制到新缓冲区。


根据要求,第一个变体的示例:

void fun(char *builtins[]){}

int main () {
const char *delegates[] = {"IN",nullptr};
fun(const_cast<char **>(delegates));
}

关于c++ - ISO C++11 不允许从字符串转换为字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43430496/

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