C++ Error: expected primary-expression before 'double' -
i need write class program calculates distance between 2 points - point.cpp, , class program calls point.cpp program calculate length(basically distance point.cpp) , slope between 2 points - linesegment.cpp. tested point.cpp separately , runs fine. when run (in conjunction linesegment.cpp), following error message:
linesegment.cpp: in member function ‘void linesegment::setend1(point)’: linesegment.cpp:31: error: expected primary-expression before ‘double’ linesegment.cpp:32: error: expected primary-expression before ‘double’ linesegment.cpp: in member function ‘void linesegment::setend2(point)’: linesegment.cpp:37: error: expected primary-expression before ‘double’ linesegment.cpp:38: error: expected primary-expression before ‘double’
my codes below. have marked 4 lines error message refers comment (everytime posted code line numbers received suggested edit take line numbers out, did not include line numbers time).
my guess calling functions point.cpp incorrectly, textbook not tell me how call functions nested class. guidance appreciated. thank time!
linesegment.hpp
#ifndef linesegment_hpp #define linesegment_hpp #include "point.hpp" class linesegment { private: point p1; point p2; public: linesegment(point, point); void setend1(point p1); void setend2(point p2); point getend1(); point getend2(); double length(); double slope(); }; #endif
linesegment.cpp
#include <iostream> #include <cmath> #include "linesegment.hpp" //constructor linesegment::linesegment(point p1, point p2) { setend1(p1); setend2(p2); } //set , points void linesegment::setend1(point p1) { p1.setxcoord(double); // <-- error p1.setycoord(double); // <-- error setend1(p1); } void linesegment::setend2(point p2) { p2.setxcoord(double); // <-- error p2.setycoord(double); // <-- error setend2(p2); } point linesegment::getend1() { return p1; } point linesegment::getend2() { return p2; } //calculations double linesegment::length() { return p1.distanceto(p2); } double linesegment::slope() { return(p2.getycoord()-p1.getycoord())/p2.getxcoord()-p1.getxcoord(); }
point.hpp
#ifndef point_hpp #define point_hpp class point { private: double xcoord; double ycoord; public: point(); point(double x1, double y1); void setxcoord(double x1); void setycoord(double y1); double getxcoord(); double getycoord(); double distanceto(const point&); }; #endif
point.cpp
#include <cmath> #include <iostream> #include "point.hpp" //default constructor point::point() { xcoord = 0.0; ycoord = 0.0; } //constructor point::point(double x, double y) { xcoord = x; ycoord = y; } //get , set functions void point::setxcoord(double x) { xcoord = x; } void point::setycoord(double y) { ycoord = y; } double point::getxcoord() { return xcoord; } double point::getycoord() { return ycoord; } // calculate distance double point::distanceto(const point& p2) { double dx = p2.xcoord - xcoord; double dy = p2.ycoord - ycoord; return sqrt(dx * dx + dy * dy); }
double
type specifier not object. , why example setend1
call itself?
it seems mean following
//set , points void linesegment::setend1(point p1) { this->p1.setxcoord(p1.getxcoord()); // <-- error this->p1.setycoord(pq.getycoord()); // <-- error } void linesegment::setend2(point p2) { this->p2.setxcoord(p2.getxcoord()); // <-- error this->p2.setycoord(p2.getxcoord()); // <-- error }
you write simpler
//set , points void linesegment::setend1(point p1) { this->p1 = p1; } void linesegment::setend2(point p2) { this->p2 = p2; }
and @ least in class point these member functions should declared qualifier const
double getxcoord() const; double getycoord() const; double distanceto(const point&) const;
Comments
Post a Comment