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

2024-01-14

我正在尝试调用这个方法

#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)));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 char 指针传递给接受 char 数组引用的函数 的相关文章

随机推荐