2
28111989
Мною был написан класс линия. В нем используется класс точка. Задача: перегрузить операцию суммы для сложения 2х линий покоординатно. Постоянно выдаёт ошибку: Ошибка 1 error C2511: Line Line:perator +(Line &,Line &): перегруженная функция-член не найдена. Не могу понять в чём проблема, смотрел схожие темы, но недопонял.
C++:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
class Point
{
public:
void SetX(int x) {itsX=x;}
void SetY(int y) {itsX=y;}
int GetX() const {return itsX;}
int GetY() const {return itsY;}
private:
int itsX;
int itsY;
};
class Line
{
public:
Line(int x1,int y1, int x2, int y2);
~Line() {}
int Getpoint1x() const {return point1x;}
int Getpoint1y() const {return point1y;}
int Getpoint2x() const {return point2x;}
int Getpoint2y() const {return point2y;}
void Setpoint1x(int x1) {point1x=x1;}
void Setpoint1y(int y1) {point1y=y1;}
void Setpoint2x(int x2) {point2x=x2;}
void Setpoint2y(int y2) {point2y=y2;}
Point Getpoint1() const {return itsp1;}
Point Getpoint2() const {return itsp2;}
void Setpoint1(Point Location) {itsp1=Location;}
void Setpoint2(Point Location) {itsp2=Location;}
float GetLength() const;
Line operator + (Line);
private:
Point itsp1;
Point itsp2;
int point1x;
int point1y;
int point2x;
int point2y;
};
Line::Line(int x1,int y1,int x2,int y2)
{
point1x=x1;
point1y=y1;
point2x=x2;
point2y=y2;
itsp1.SetX(point1x);
itsp1.SetY(point1y);
itsp2.SetX(point2x);
itsp2.SetY(point2y);
}
float Line::GetLength() const
{
return (sqrt(pow(float(point1x-point2x),2)+pow(float(point1y-point2y),2)));
}
Line Line::operator+ (Line l1,Line l2)
{
Line tmp(l1.Getpoint1x()+l2.Getpoint1x(),l1.Getpoint1y()+l2.Getpoint1y(),l1.Getpoint2x()+l2.Getpoint2x(),l1.Getpoint2y()+l2.Getpoint2y());
return tmp;
}
void main()
{
Line MyLine1(1,1,2,1);
Line MyLine2(2,2,2,2);
Line ResLine(0,0,0,0);
ResLine=MyLine1+MyLine2;
cout<<ResLine.GetLength();
_getch();
}