我正试图称这种方法
#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?
正如错误所解释的那样,您无法使用指针初始化对数组的引用.
当且仅当你能证明value事实上指向(第一个元素)一个合适类型的数组时,那么你可以做的是显式重新解释指针,并间接它:
DoSomething(*std::launder(reinterpret_cast<char(*)[SIZE]>(value)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
721 次 |
| 最近记录: |