【发布时间】:2017-01-26 00:19:38
【问题描述】:
我正在为类编写一些类,由于某种原因,我的私有变量在构造函数设置它们之后以某种方式发生了变化。在我的代码中,每个点实例的 x,y 值都被保存为非常小的数字,根本不接近它们的实际值。当我在构造函数运行后计算出一些存储的值时,这些值是正确的,但是当调用我的斜率或长度函数时,它们被传递了完全错误的值,导致长度为 0,斜率为“nan”。知道为什么会这样吗?
LineSegment.hpp
#include "Point.hpp"
#ifndef LineSegment_hpp
#define LineSegment_hpp
class LineSegment
{
private:
Point endp1;
Point endp2;
double x_1;
double x_2;
double y_1;
double y_2;
public:
LineSegment(Point p1, Point p2);
//SET-METHODS
void setEnd1(Point p1);
void setEnd2(Point p2);
//get-methods
Point getEnd1();
Point getEnd2();
//calculations
double slope();
double length();
};
#endif
LineSegment.cpp
#include "LineSegment.hpp"
LineSegment::LineSegment(Point p1, Point p2)
{
double x_1 = p1.getXCoord();
double y_1 = p1.getYCoord();
setEnd1(p1);
double y_2 = p2.getYCoord();
double x_2 = p2.getXCoord();
setEnd1(p2);
}
//set functions
void LineSegment::setEnd1(Point p1)
{
Point endp1 = p1;
}
void LineSegment::setEnd2(Point p2)
{
Point endp2 = p2;
}
//get-methods
Point LineSegment:: getEnd1()
{
return endp1;
}
Point LineSegment:: getEnd2()
{
return endp2;
}
//calculations
double LineSegment::slope()
{
return (y_2-y_1)/(x_2-x_1);
}
double LineSegment::length()
{
return endp1.distanceTo(endp2);
}
Main.cpp
#include "Point.hpp"
#include "LineSegment.hpp"
#include <iostream>
int main()
{
Point p1(-1.5, 0.0);
Point p2(1.5, 4.0);
double dist = p1.distanceTo(p2);
LineSegment ls1(p1, p2);
double length = ls1.length();
std::cout << length << std::endl;
double slope = ls1.slope();
std::cout << slope << std::endl;
}
【问题讨论】:
-
删除所有垂直空白,这会使您的代码不可读。