Ich versuche Betreiber zu überlasten < < auf Funktion. Ich bin für ein paar Stunden festgefahren, um das herauszufinden. Ich habe eine Menge Beispiele dafür gefunden, wie man das bei Ostream macht, aber keines von ihnen hat mein spezifisches Problem angesprochen.Der Versuch, zu überlasten << Klasse Funktion
#include <iostream>
class foo
{
public:
foo& operator<< (foo& (*pf)(foo&))
{
return pf(*this);
}
foo& do_something_more(foo& os)
{
return os;
}
};
ostream& do_something(ostream& os)
{
os << "1." << "\n" << "2.";
return os;
}
int main()
{
foo a;
std::cout << do_something; // this works
a << do_something_more; // this do not
system("pause");
return 0;
}
Dies ist nur ein Beispiel, wie ich versucht habe, dies zu lösen. Ich bekomme den Fehler 'do_something_more': Indeclared Identifier in diesem.
Danke für die Hilfe!
'do_something_more()' ist eine Memberfunktion von 'foo' und Sie benötigen eine Instanz, um sie aufzurufen. –
Oder machen Sie es statisch und verwenden Sie 'a << foo :: do_something_more;' ... oder nur Nichtmitglied. – LogicStuff
Nichts von diesem Zeug macht wirklich Sinn. –