我正在尝试调用这个方法
#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(使用前将#替换为@)