Gast
2007-12-17, 13:48:26
Hi,
ich habe im Netz ein Tutorial gesehen, was mich verwirrt, weil ich es anders bisher nicht hinbekomme. Ich möchte einige meiner Klassen Objekte einfach durch einen Stream schicken können und sie kümmern sich selber um ihre Ausgabe in der Konsole. So soll das aussehen:class Foo
{
public:
friend std::ostream& operator<<(std::ostream& out, const Foo& f);
}
//cpp
std::ostream& operator<<(std::ostream& out, const Foo& f)
{
// ... f.private_member;
return out;
}Dies funktioniert auch, finde ich aber irgendwie eigenartig und unschön. Hier ist es doch so, daß die Operatorfunktion << kein Element der Klasse Foo ist, sondern nur einer globalen Funktion mit jener Signatur erlaubt wird auf Foos private-member zuzugreifen?
Und warum funktioniert dieses nicht? So würde ich es eigentlich erwarten...class Foo
{
public:
std::ostream& operator<<(std::ostream& out);
}
//cpp
std::ostream& Foo::operator<<(std::ostream& out)
{
// ... this->private_member;
return out;
}Jemand Idee, warum der Stream Out-Operator hier anders ist?
ich habe im Netz ein Tutorial gesehen, was mich verwirrt, weil ich es anders bisher nicht hinbekomme. Ich möchte einige meiner Klassen Objekte einfach durch einen Stream schicken können und sie kümmern sich selber um ihre Ausgabe in der Konsole. So soll das aussehen:class Foo
{
public:
friend std::ostream& operator<<(std::ostream& out, const Foo& f);
}
//cpp
std::ostream& operator<<(std::ostream& out, const Foo& f)
{
// ... f.private_member;
return out;
}Dies funktioniert auch, finde ich aber irgendwie eigenartig und unschön. Hier ist es doch so, daß die Operatorfunktion << kein Element der Klasse Foo ist, sondern nur einer globalen Funktion mit jener Signatur erlaubt wird auf Foos private-member zuzugreifen?
Und warum funktioniert dieses nicht? So würde ich es eigentlich erwarten...class Foo
{
public:
std::ostream& operator<<(std::ostream& out);
}
//cpp
std::ostream& Foo::operator<<(std::ostream& out)
{
// ... this->private_member;
return out;
}Jemand Idee, warum der Stream Out-Operator hier anders ist?