如何解决如何传递数组代替指向函数的指针
我有以下函数myfunc,该函数将std :: span作为变量。
const foo* foos = nullptr;
uint32_t fooNum = 0;
std::span<const foo> fooSpan = std::span<const foo>(foos,fooNum);
myfunc(fooSpan)
现在我还有另一组数组形式的变量
const foo fooArray[];
uint32_t numfoo = 0;
这是使用这些变量调用myfunc()的正确方法
std::span<const foo> fooSpan = std::span<const foo>(foosArray,numfoo);
myfunc(fooArray)
解决方法
如果myfunc
的原型是
void myfunc (std::span<const foo>);
然后,myfunc(fooArray)
仅在fooArray
是const foo
的数组且具有可用的初始化程序的情况下才是合法的,或者是std::array
,即可以推导其大小来考虑哪个将使用span
的构造函数,例如
using foo = int;
const foo arrFunc[] = {3,4,5};
std::array<const foo,3> arrFunc2{3,5};
void myFunc(std::span<const foo>) {}
int main()
{
myFunc(arrFunc);
myFunc(arrFunc2);
}
也可以使用类似myFunc({arrFunc,numfoo});
的方法,即在原位置创建span
,在这种情况下arrFunc
可以是指针。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。