我正在尝试调用此方法
#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] 删除。
我来说两句