salve a tutti..
volevo un aiutino... il mio libro dice che è possibile effettuare l'overload dell'operatore << e che è possibile fargli utilizzare le variabili private della classe dichiarando l'overload come friend della classe.
sino qui non ci piove... poi però presenta questo programma (seguito da altri) e .. il compilatore si rifiuta di compilarlo dicendo:
error C2248: 'x' : cannot access private member declared in
see declaration of 'x'
error C2248: 'y' : cannot access private member declared in
see declaration of 'y'
error C2248: 'z' : cannot access private member declared in class 'ThreeD'
see declaration of 'z'
error C2593: 'operator <<' is ambiguous
sono disperato... perchè non funziona?!?
codice:
#include <iostream>
using namespace std;
class ThreeD {
int x, y, z; // coordinate 3-D - ora private
public:
ThreeD(int a, int b, int c) { x = a; y = b; z = c; }
friend ostream &operator<<(ostream &stream, ThreeD obj);
};
// Visualizza le coordinate X, Y, Z - inseritore di ThreeD.
ostream &operator<<(ostream &stream, ThreeD obj)
{
stream << obj.x << ", ";
stream << obj.y << ", ";
stream << obj.z << "\n";
return stream; // restituisce lo stream
}
int main()
{
ThreeD a(1, 2, 3), b(3, 4, 5), c(5, 6, 7);
cout << a << b << c;
return 0;
}