将char指针传递给接受对char数组的引用的函数

祖鲁卡斯

我正在尝试调用此方法

#define SIZE 16
void DoSomething(char(&value)[SIZE])
{
}

通过这种方法:

void BeforeDoingSomething(char* value, int len)
{
    if (len == SIZE)
    {
        DoSomething(value);
    }
}

尝试这样做会给我这个错误:

类型“ char(&)[16]”的引用(非const限定)不能用类型“ char *”的值初始化

关于如何使编译器接受value函数中传递的任何提示BeforeDoingSomething

埃雷里卡

如错误所述,您无法使用指针初始化对数组的引用。

当且仅当您可以证明value确实指向适当类型的数组(的第一个元素)时,您可以做的是显式重新解释指针,并将其间接化:

DoSomething(*std::launder(reinterpret_cast<char(*)[SIZE]>(value)));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章