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
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