【发布时间】:2014-06-29 17:56:10
【问题描述】:
以下代码给了我一个分段错误,我尝试了很多不同的方法,但无法理解为什么它不起作用。我对 C++ 很陌生,所以如果这个问题可能有点简单,我很抱歉;)这是我的代码:
class Line2D
{
public:
Point2D punkt;
double dx, dy;
void set_values(Point2D p, double d1, double d2);
Point2D* getIntersectionPoint(Line2D& line2);
};
void Line2D::set_values(Point2D p, double d1, double d2)
{
punkt = p;
dx = d1;
dy = d2;
}
Point2D* Line2D::getIntersectionPoint(Line2D& line2)
{
double a, b;
Point2D* intersec;
double det = dx*line2.dy - dy*line2.dx;
if(det == 0)
{
return NULL;
}
else
{
double c1 = line2.punkt.k1 - punkt.k1;
double c2 = line2.punkt.k2 - punkt.k2;
a = (line2.dy*c1 - line2.dx*c2)/det;
b = (dx*c2 - dy*c2)/det;
}
intersec->set_values(a,b);
return intersec;
}
int main()
{
//...
Line2D l1;
Line2D l2;
l1.set_values(p3,6,3);
Point2D p11;
p11.set_values(1,6);
l2.set_values(p11,4,0);
Point2D* intersec;
intersec = l1.getIntersectionPoint(l2);
}
【问题讨论】:
-
您希望
intersec指向哪里? -
没有分配给
intersec -
你试过在调试器中运行它吗?这是理解程序为什么会出现段错误的重要技能。
标签: c++ pointers reference segmentation-fault dereference