是的,我确实知道如何实际创建对 C 风格函数的引用。 但是当我尝试通过引用传递数组时,它给出了“无匹配函数”错误。 我首先按值获取数组,因此当我传递它时,我必须创建一个引用。
我可以使用 std::vector 来存储它(我可能会),但是现在我遇到了这个问题,我对解决方案很好奇。
这是简化的示例:
void foo((&array)[120]){
// code here
}
// taken by value
void bar(array[120]){
foo((&array));
// doesn't work
}
// This version does not work either
void bar(array[120]){
Type *arrRef = {(&array)[120]};
foo(arrRef);
}
您需要使用模板,并将大小作为模板参数:
template<size_t N>
void foo(int (&array)[N])
{
// ...
}
void bar()
{
int arr[32];
foo(arr);
}