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

#endif
codice:
#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;
}