传递点数组作为参数

时间:2014-09-08 20:03:37

标签: c++ arrays point

我有一个点数组,定义如下:

const int pNum = 8;
Point framePt[pNum]; 

我想将它传递给一个函数,该函数将访问数组中的值并获取数组的大小。所以我定义了如下函数:

void getFrameCord(Point *framePt)

但这确实没有通过数组。所以有人可以帮我这个吗? 谢谢!

1 个答案:

答案 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与任何容器点或容器的任何部分一起使用;它不会限制调用者将点存储在连续的数组中。