Перегрузка Операции Сложения

  • Автор темы 28111989
  • Дата начала
Статус
Закрыто для дальнейших ответов.
2

28111989

#1
Мною был написан класс линия. В нем используется класс точка. Задача: перегрузить операцию суммы для сложения 2х линий покоординатно. Постоянно выдаёт ошибку: Ошибка 1 error C2511: Line Line::eek: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();
}
 
R

rrrFer

#2
тут 1 аргумент:
Код:
Line operator + (Line);
тут 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;
}
надо исправлять
 
Статус
Закрыто для дальнейших ответов.