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