Visualizzazione dei risultati da 1 a 4 su 4

Visualizzazione discussione

  1. #1

    [C++] - Ridefinizione Operatori->HELP()

    Buonasera, come sempre mi rivolgo a tutti voi e ringrazio tutti in anticipo. Chiedevo aiuto sul seguente problema: avendo una mia classe dichiarata in un header come:

    codice:
    namespace Geometrics{
        class Point{
            public:
                //... costruttori, distruttore, etc...
                const Point *operator=(const Point *_p);
                void set_x(double _x);
                void set_y(double _y);
                double get_x();
                double get_y();
                //... altre funzioni...
            private:
                double *x;
                double *y;
        };
    }
    e imprementata in un sorgente come:

    codice:
    //...
    const Geometrics::Point *Geometrics::Point::operator=(const Geometrics::Point *_p){
        this->set_x(_p->get_x());
        this->set_y(_p->get_y());
    }
    void Geometrics::Point::set_x(double _x){
        *(this->x) = _x;
    }
    void Geometrics::Point::set_y(double _y){
        *(this->y) = _y;
    }
    double Geometrics::Point::get_x(){
        return *(this->x);
    }
    double Geometrics::Point::get_y(){
        return *(this->y);
    }
    //...
    vorrei che, quando dichiaro due puntatori ad oggetto:

    codice:
    //... dichiarazioni, main(), etc..
    Geometrics::Point *p1 = new Geometrics::Point(1.1, 1.1);
    Geometrics::Point *p2 = new Geometrics::Point(2.2, 2.2);
    assegnando p2 a p1

    codice:
    p1 = p2;
    venisse chiamato l'operatore da me ridefinito... Ma chiaramente ciò non accade! ...
    se invece esplicitamente chiamo l'operatore con questa sintassi:

    codice:
    p1->operator=(p2);
    tutto viene eseguito alla perfezione... Gentilmente chiedo quindi, c'è qualcosa che dimentico nel codice? Ringrazio di nuovo in anticipo chiunque abbia voglia di darmi una spiegazione,
    Saluti,
    Giuseppe
    Ultima modifica di milazzo.g; 28-04-2014 a 19:01

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.