我有一个点数组,定义如下:
const int pNum = 8;
Point framePt[pNum];
我想将它传递给一个函数,该函数将访问数组中的值并获取数组的大小。所以我定义了如下函数:
void getFrameCord(Point *framePt)
但这确实没有通过数组。所以有人可以帮我这个吗? 谢谢!
答案 0 :(得分:3)
你必须以某种方式告诉函数有关数组中元素的数量。指向元素的指针仅指示该特定元素的位置,它不携带任何信息,例如该元素是否是数组的一部分(更不用说该数组有多大)。
一些可能的解决方案:
void getFrameCord(Point *framePt, size_t num_points);
// ...
getFrameCord(framePt, pNum);
template<size_t N>
void getFrameCord(Point (&framePt)[N])
{ /* ... */ }
// ...
getFrameCord(framePt);
template<typename InputIterator>
void getFrameCord(InputIterator b, InputIterator e)
{
// ...
}
// ...
getFrameCord( std::begin(framePt), std::end(framePt) )
这些中的最后一个将允许您将getFrameCord
与任何容器点或容器的任何部分一起使用;它不会限制调用者将点存储在连续的数组中。