Ciao a tutti.
Sto implemantando una classe Point che permetta di creare dei punti tramite il costruttore della classe, che prende come argomento le coordinate. E questo è ok.
Ho però aggiunto un costruttore vuoto, per "sicurezza", che non prende argomenti e inizializza il punto con le coordinate (0; 0). Quando però mando in output il punto così creato (tramite l'operatore ridefinito) ottengo tutt'altro risultato (mi stampa unicamente un 1 a schermo).
Inoltre mi da l'avviso Ambiguous overload for 'operator>>' in 'std::cin >> p2' e non capisco come mai.
Qualcuno saprebbe aiutarmi?
Grazie!
codice:#ifndef POINT_H #define POINT_H #include <iostream> using std::ostream; using std::istream; class Point { friend ostream &operator<<(ostream &, const Point &); friend istream &operator>>(istream &, Point &); public: Point(); Point(const double &, const double &); ~Point(); private: void setX(const double &); void setY(const double &); double x; double y; }; #endifcodice:#include "point.h" #include <iostream> using std::endl; using std::ostream; using std::istream; ostream &operator<<(ostream &output, const Point &point) { output << point.x << ' ' << point.y; return output; } istream &operator>>(istream &input, Point &point) { input >> point.x; input.ignore(); input >> point.y; return input; } Point::Point() { setX(0); setY(0); } Point::Point(const double &X, const double &Y) { setX(X); setY(Y); } Point::~Point() { ; } void Point::setX(const double &X) { x = X; } void Point::setY(const double &Y) { y = Y; }codice:// Rocco Meli, 05.01.2011 // Chaos game #include "point.h" #include <iostream> using std::cout; using std::endl; using std::cin; #include <fstream> int main() { Point p1(5, 10); Point p2(); cout << p1 << endl; cout << p2 << endl; cin >> p2; cout << p2;; return 0; }

Rispondi quotando