如何通过引用将 C 风格数组传递给另一个函数

问题描述 投票:0回答:1

是的,我确实知道如何实际创建对 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);
}
c++ arrays
1个回答
0
投票

您需要使用模板,并将大小作为模板参数:

template<size_t N>
void foo(int (&array)[N])
{
    // ...
}

void bar()
{
    int arr[32];
    foo(arr);
}
© www.soinside.com 2019 - 2024. All rights reserved.