Ich möchte eine Funktion haben, die wie Cout wirkt, aber mit einigen Optionen.Anpassen von Cout aus einer Klasse mit Optionen
ZB: MyFunc(0) << "Cats like to drink milk " << 2 << endl;
wenn sein 0, sollte es nicht sein Ausgang
Wenn sein wie folgt aus:
MyFunc(1) << "Cats like to drink milk " << 2 << endl;
ich die Ausgabe sehen sollte "Cats milk2 trinken". Ich lese aus mehreren Foren, dass Ostream benötigt wird, aber ich bin mir nicht sicher, wie ich es für meinen Zweck verwenden kann. MyFunc ist im Grunde eine Klasse mit 1, 0 Optionen für den Konstruktor.
Ich habe solche Dinge gesehen, aber ich verstehe nicht, wie es funktioniert.
Log& operator<< (std::ostream &(*f)(std::ostream &)){
cout << *f;
return *this;
}
Jede geschätzt Hilfe.
Haben Sie eines der einfacheren Teile dieses Problems gelöst? Wie eine Klasse zu schreiben, die sich wie "Cout" verhält, ohne die Nummer zu nennen? – Beta
Nun, Sie sollten im Allgemeinen davor zurückschrecken, von Objekten im Standard-Namespace zu erben, aber ich könnte vorhersehen, dass Sie 'std :: cout' einpacken und den Operator' << 'für alle [gleichen Typen] implementieren (http: // en .cppreference.com/w/cpp/io/basic_ostream/operator_ltlt). Etwas wie [dies] (http://coliru.stacked-crooked.com/a/4970cbea5b144ec7) – AndyG
@AndyG, geschätzt. Was ich genau gesucht habe! – user42826