Operator << überladen
-
Hallo Leute,
ich schreibe gerade ein CGI-Programm in C++. Dazu nutze ich die cgicc-Bibliothek. Leider fehlt es dieser Bibliothek an einem Menü-Generator. Diesen will ich jetzt dazu hauen und zwar mit einem "<<"-Operator.
Die cgicc-Bibliothek gibt mir mittels eines Streams einen Html-Quelltext aus. Z.B. spuckt
cout << a.("DerTextZumLink").set("href", "http://...") << endl;mir aus:
<a href="http://... >DerTextZumLink</a>
Jetzt hab' ich mir ein Objekt (ich nenn's mal Menu_t) gebastelt was diese Anker (oder anderes HTML-Zeugs) in einen vector speichert und auf Wunsch daraus eine HTML-Liste macht.
Was zu meinem Glück jetzt nocht fehlt ist das ich das Menu folgendermaßen füllen kann:
Menu_t aMenu; aMenu << a.("DerTextZumLink").set("href", "http://...") << endl;Kurze Frage: Wie überlade ich den Operator "<<"?

Und weiter soll das Menü dann ausgespuckt werden mit:
cout << aMenu << endl;Was etwa sowas liefern soll:
<ul>
<li><a href="http://... >DerTextZumLink</a></li>
</ul>Kurze Frage: Wie überlade ich hier wiederrum den Operator "<<"?

Bin über jeden Tipp dankbar und noch einen sonnigen Tag für alle!
Goran
-
Also Operatorenüberladung sagt dir schon was, oder?
-
Nein, nein. So meinte ich das nicht. Operator-Überladung ist das Mittel der Wahl. Das ist uns allen klar. Aber wie sehen die Signaturen der Operator-Überladungen aus? Vor allem in dem o.g. Beispiel?
Gruß, Goran
-
Naja. Ohne eine Ahnung zu haben, was a für ein Objekt ist, ist das ziemlich schwer.

Zu der lib hast du doch sicher auch einen Header dazu und jetzt kannst du dort schauen, wie die das machen. Grundsätzlich nehme ich mal an, dass der Operator << eine Referenz auf das Objekt übernimmt.
-
ich vermute mal ungefähr so
Menu_t& operator<<(Menu_t& m, const cgicc::HTMLElement& e);