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?

    http://tutorial.schornboeck.net/operatoren_ueberladung.htm



  • 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.


  • Mod

    ich vermute mal ungefähr so

    Menu_t& operator<<(Menu_t& m, const cgicc::HTMLElement& e);
    

Anmelden zum Antworten