Ich schreibe einige Klassen für die Klasse und aus irgendeinem Grund werden meine privaten Variablen irgendwie geändert, nachdem der Konstruktor sie gesetzt hat. In meinem Code werden die x, y-Werte für jede Instanz von Punkt als sehr kleine Zahlen gespeichert, die nicht nahe an dem sind, was sie wirklich sind. Wenn ich nach dem Ausführen des Konstruktors einige der gespeicherten Werte ausbleiche, sind die Werte korrekt, aber beim Aufruf meiner Steilheits- oder Längenfunktion werden ihnen die völlig falschen Werte übergeben, die zu 0 für die Länge und "nan" für die Steigung führen. Irgendeine Idee, warum das passiert?Klassenvariablen werden irgendwie geändert
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;
}
Entfernen Sie den gesamten vertikalen Leerraum, der Ihren Code unlesbar macht. –