Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

operator += przeciazenie

Ostatnio zmodyfikowano 2016-02-09 21:47
Autor Wiadomość
zolty13
Temat założony przez niniejszego użytkownika
operator += przeciazenie
» 2016-02-09 21:32:02
otoz mam pytanie czemu przeciazajac w ten sposób operator += wynik nie wychodzi mi za pomocą operacji u+=v; jednak gdy uzyje tej formuly z operatorem to tak. Dzieki wielkie za pomoc ;) (tak wiem ze jak w definicji operatora += dam return wektor(this->x+=p.x,this->y+=p.y); zamiat return wektor(this->x+p.x,this->y+p.y); jednka czemu się tak dzieje )
C/C++
#include <iostream>

using namespace std;

class wektor
{
public:
    double x, y;
    wektor(); //konstrukor
    wektor( double x, double y ); //konstruktor x y
    wektor operator +=( const wektor & p );
    ~wektor(); //destruktor
   
};
// definicje z klasy wektor
wektor::wektor() //konstruktor
{
    this->x = 0; this->y = 0;
    cout << "Witamy-0" << endl;
}
wektor::wektor( double x, double y ) //konstruktor x y
{
    cout << "Witamy-Double" << endl;
    this->x = x;
    this->y = y;
}
wektor wektor::operator +=( const wektor & p )
{
    return wektor( this->x + p.x, this->y + p.y );
}
wektor::~wektor() //destruktor
{
    cout << "Zegnamy" << endl;
};

int main()
{
    wektor u( 25, 25 ); wektor v( 10, 10 );
    cout << "u[" << u.x << "," << u.y << "]" << endl;
    cout << "v[" << v.x << "," << v.y << "]" << endl;
    u += v; /*z=z.operator +=(v);*/
    cout << "u[" <<.x << "," << u.y << "]" << endl;
    return 0;
}
P-144669
michal11
» 2016-02-09 21:42:30
A dlaczego ty chcesz w ogóle cokolwiek zwracać z tej funkcji ? Przecież operator += powinien modyfikować obiekt na rzecz którego jest wywoływany.

Żeby twój operator zadziałał to w main musisz zmienić:
C/C++
u = u += v;

Co jest bez sensu.
P-144671
zolty13
Temat założony przez niniejszego użytkownika
» 2016-02-09 21:47:35
C/C++
class wektor
{
public:
    double x, y;
    wektor(); //konstrukor
    wektor( double x, double y ); //konstruktor x y
    void operator +=( const wektor & p );
    ~wektor(); //destruktor
   
};


void wektor::operator +=( const wektor & p )
{
    this->x += p.x; this->y += p.y;
}
edit a nie jednak tak
C/C++
class wektor
{
public:
    double x, y;
    wektor(); //konstrukor
    wektor( double x, double y ); //konstruktor x y
    wektor operator +=( const wektor & p );
    ~wektor(); //destruktor
   
};


wektor wektor::operator +=( const wektor & p )
{
    return( this->x += p.x, this->y += p.y );
}
P-144672
« 1 »
  Strona 1 z 1