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

Zul*_*kas 10 c++

我正试图称这种方法

#define SIZE 16
void DoSomething(char(&value)[SIZE])
{
}
Run Code Online (Sandbox Code Playgroud)

从这个方法:

void BeforeDoingSomething(char* value, int len)
{
    if (len == SIZE)
    {
        DoSomething(value);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

有关如何让编译器接受value函数传递的任何提示BeforeDoingSomething

eer*_*ika 6

正如错误所解释的那样,您无法使用指针初始化对数组的引用.

当且仅当你能证明value事实上指向(第一个元素)一个合适类型的数组时,那么你可以做的是显式重新解释指针,并间接它:

DoSomething(*std::launder(reinterpret_cast<char(*)[SIZE]>(value)));
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

721 次

最近记录:

7 年,1 月 前