Visualizzazione dei risultati da 1 a 4 su 4

Hybrid View

  1. #1
    L'operatore che hai definito opera su oggetti di tipo Geometrics::Point, ma tu stai facendo un assegnamento tra puntatori a Geometrics::Point (e l'assegnamento tra puntatori non è ridefinibile, per ovvi motivi). Se vuoi che l'assegnamento funzioni effettualo tra due oggetti:
    codice:
    Geometrics::Point *p1 = new Geometrics::Point(1.1, 1.1);
    Geometrics::Point *p2 = new Geometrics::Point(2.2, 2.2);
    *p1=*p2;
    O, molto meglio:
    codice:
    Geometrics::Point p1(1.1, 1.1);
    Geometrics::Point p2(2.2, 2.2);
    p1=p2;
    dato che non mi pare abbia alcun senso allocare questi due oggetti nell'heap (se vieni da Java, in C++ new si usa molto più di rado).
    Amaro C++, il gusto pieno dell'undefined behavior.

  2. #2
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    (e l'assegnamento tra puntatori non è ridefinibile, per ovvi motivi). Se vuoi che l'assegnamento funzioni effettualo tra due oggetti:
    Pensavo fosse possibile ridefinirlo! Grazie infinite, cambio tutto quindi con
    codice:
    const Point &operator=(const Point &_p);
    //...
    const Geometrics::Point &Geometrics::Point::operator=(const Geometrics::Point &_p){
        this->set_x(_p.get_x());
        this->set_y(_p.get_y());
        return *this;
    }
    e utilizzo come:

    codice:
    *p1 = *p2;

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 © 2026 vBulletin Solutions, Inc. All rights reserved.