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

Тема в разделе "Общие вопросы по С и С++", создана пользователем 28111989, 24 окт 2011.

Статус темы:
Закрыта.
  1. 28111989

    28111989 Гость

    Мною был написан класс линия. В нем используется класс точка. Задача: перегрузить операцию суммы для сложения 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();
    }
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    тут 1 аргумент:
    Код (Text):
    Line operator + (Line);
    тут 2:
    Код (Text):
    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;
    }
    надо исправлять
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей