Wenn Sie Operator definieren wollen, so dass Sie tun können:
cin >> myGraph
cout << myGraph
Sie so etwas wie dieses Beispiel müssen unten tun:
struct Entry
{
string symbol;
string original;
string currency;
Entry() {}
~Entry() {}
Entry(string& symbol, string& original, string& currency)
: symbol(symbol), original(original), currency(currency)
{}
Entry(const Entry& e)
: symbol(e.symbol), original(e.original), currency(e.currency)
{}
};
istream& operator>>(istream& is, Entry& en);
ostream& operator<<(ostream& os, const Entry& en);
Dann Betreiber implementieren:
istream& operator>>(istream& is, Entry& en)
{
is >> en.symbol;
is >> en.original;
is >> en.currency;
return is;
}
ostream& operator<<(ostream& os, const Entry& en)
{
os << en.symbol << " " << en.original << " " << en.currency;
return os;
}
Hinweis: In diesem Fall ist der Eintrag struct so dass seine Mitglieder öffentlich sind. Wenn Sie sie nicht veröffentlichen möchten, können Sie die Operatormethoden als Freunde definieren, damit sie auf private Mitglieder von Entry zugreifen können.
Hier ist, wie Eintrag aussehen würde, wenn es den Mitgliedern nicht öffentlich waren:
struct Entry
{
private:
string symbol;
string original;
string currency;
public:
Entry() {}
~Entry() {}
Entry(string& symbol, string& original, string& currency)
: symbol(symbol), original(original), currency(currency)
{}
Entry(const Entry& e)
: symbol(e.symbol), original(e.original), currency(e.currency)
{}
friend istream& operator>>(istream& is, Entry& en);
friend ostream& operator<<(ostream& os, const Entry& en);
};
Dank für das Bearbeiten, ich bin nicht sicher, warum ich ‚global‘ getippt ... – stefanB
Korrekte Verwendung von >> beantwortet aber die Frage nicht wirklich. –