在这里得到了一些代码,这给了我一个我似乎无法修复的运行时错误。函数Length()计算点数组中所有点之间的累积距离。它使用了以前定义的功能Distance(),据我所知它可以完美工作。有指针吗?
这是我的函数源代码:
template<typename Point> //Length function
double PointArray<Point>::Length() const
{
double total_length = 0;
for (int i=0; i<Size(); i++)
{
total_length += (GetElement(i)).Distance(GetElement(i+1));
}
return total_length;
}
这是我的实现:
cout<<"The Length of the Point Array is: "<<(*ptArray1).Length()<<endl;
非常感谢!
最佳答案
您正在读取超出数组末尾的元素。
for (int i=0; i<Size(); i++)
{
total_length += (GetElement(i)).Distance(GetElement(i+1));
//^^^
}
到达
for
循环的末尾时,您将读取最后一个元素,然后计算到下一个元素的距离-该距离超出数组的范围。您的for
循环应如下所示:for (int i=0; i<Size() - 1; i++)
{
total_length += (GetElement(i)).Distance(GetElement(i+1));
}