tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
401
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von drpingoo
    drpingoo drpingoo ist offline Mitglied Silber
    Registriert seit
    Mar 2008
    Ort
    Schweiz
    Beiträge
    97
    Hallo zusammen!

    Ich hätte da ne Frage zum Überladen des Operators <<. Und zwar so, dass man folgendes schriben kann: CC << "hello" << "world" ,wobei CC ein Klassenobjekt ist. Bis jetzt bin ich aber nur auf folgendes gestossen: cout << CC und als Code geschrieben etwas in diese Richtung :

    PHP-Code:
    ostreamoperator<<(ostreamStream, const tBruchB)
    {
        return 
    Stream << B.GetZaehler() << "/" << B.GetNenner();


    Kann ich anstatt ostream auch einfach den Klassennamen verwenden? Aber dann ist es kein ostreamobjekt mehr...

    lg
     

  2. #2
    Avatar von devDevil
    devDevil devDevil ist offline Mitglied Platin
    Registriert seit
    Jun 2005
    Beiträge
    662
    Was willst du denn genau machen? Man kann das problemlos machen (was du da willst), is nur die Frage ob das der sinnvollste/schnellste/einfachste/beste weg ist
     

  3. #3
    Avatar von drpingoo
    drpingoo drpingoo ist offline Mitglied Silber
    Registriert seit
    Mar 2008
    Ort
    Schweiz
    Beiträge
    97
    Also die ganze Aufgabenstellung geht so. Und mithilfe von count soll die Operatorenüberladung gemacht werden, damit es so funktioniert wie vorhni. Dazu hab ich auch noch eine Frage. Was macht die Fkt. count genau? Ich habe eben diese Unteraufgabe übersprungen, aber die Lösung mit der Überladung sollte diese Fkt. auch beinhalten.

    Gegeben sei die Klasse CharCounter. Diese zählt das Auftreten von einzelnen Characters
    innerhalb von Strings. Die Strings deren Characters gezählt werden sollen, werden mit der
    Funktion count(…) übergeben. Das Array counts zählt das Auftreten der einzelnen
    Zeichen. Die Häufigkeit eines Zeichens lässt sich mit der Funktion getCount(…) ermitteln.
    PHP-Code:
    class CharCounter {
    private:
    intcounts;
    char first;
    char last;
    public:
    CharCounter(char start=’a’char stop=’z’); //start must be smaller than stop
    ~CharCounter();
    virtual void count(const charstr);
    int getCount(char c) const
    {
    if (
    c>=first && <= last) {
    return 
    counts[first];
    } else {
    return 
    0;
    }
    };
    }; 
    Beim Konstruktor wird ein zusammenhängender Bereich (gemäss ASCII) von Characters
    definiert, die jeweils einzeln gezählt werden sollen. Nachfolgend ist die Implementation des
    Konstruktors angegeben:
    PHP-Code:
    CharCounter::CharCounter (char startchar stop) {
    first start;
    last stop;
    int s = (int)stop – (int)start 1;
    counts = new int[s];
    for (
    int i=0i<si++) counts[i] = 0;

    Folgendes Aufrufbeispiel diene dem Verständnis:
    CharCounter CC(’a’,’z’); //Initialisiert Zähler für Zeichen a bis z
    CC.count(“hello“);
    CC.count(“world“);
    std::cout << CC.getCount(’l’); //gibt „3“ auf derKonsole aus
     

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Falls ich dich richtig verstanden habe:
    Code cpp:
    1
    2
    3
    4
    
    CharCounter& CharCounter::operator<< (const char* s) {
      this->count(s);
      return *this;
    }
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    Avatar von drpingoo
    drpingoo drpingoo ist offline Mitglied Silber
    Registriert seit
    Mar 2008
    Ort
    Schweiz
    Beiträge
    97
    Ich glaub schon... Also dann sollte man so etwas schreiben können CC << "hello" << "hi" wieso muss man da nicht über ostream gehen? oder gilt das nur für cout selbst und nicht für den <<-Operator?
     

  6. #6
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von drpingoo Beitrag anzeigen
    Ich glaub schon... Also dann sollte man so etwas schreiben können CC << "hello" << "hi" wieso muss man da nicht über ostream gehen? oder gilt das nur für cout selbst und nicht für den <<-Operator?
    ostream ist auch nur eine Klasse für die der operator<< definiert ist. Der Operator hat doch sonst nichts mit der Klasse zu tun, warum sollte man dort einen Ausgabestream benötigen?

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  7. #7
    Avatar von drpingoo
    drpingoo drpingoo ist offline Mitglied Silber
    Registriert seit
    Mar 2008
    Ort
    Schweiz
    Beiträge
    97
    Gut, ja nein, das war meine Frage, weil das bei den sonstigen Beispielen, die ich gesehen habe immer vorkam. Danke Was macht die count Fkt. aber genau eigtl? Ich komme da bei der Formulierung der Aufgabenstellung nicht wirklich draus.
     

  8. #8
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von drpingoo Beitrag anzeigen
    Was macht die count Fkt. aber genau eigtl? Ich komme da bei der Formulierung der Aufgabenstellung nicht wirklich draus.
    Ist doch eigentlich ganz eindeutig formuliert.

    Sie zählt von dem eingegebnen String für jedes Zeichen welches in dem Intervall (start, end) liegt die Häufigkeit. Das siehst du doch an dem Beispiel...

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  9. #9
    Avatar von drpingoo
    drpingoo drpingoo ist offline Mitglied Silber
    Registriert seit
    Mar 2008
    Ort
    Schweiz
    Beiträge
    97
    Ah jetzt verstehe ich, den Unterscheidn zwischen count und getCount. count zählt die Häufigkeit jedes Buchstaben und getCount einen spezifischen, je nachdem, welchen man verlangt. Gut, dann programmier ich das mal, danke.

    lg
     

Ähnliche Themen

  1. operator << als Member überladen
    Von AlexanderKiebler im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 02.01.09, 15:48
  2. Operator überladen undt const
    Von LukeS im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 16.05.07, 20:21
  3. Überladen von operator+.... Funktionsweise?
    Von bigfella im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 11.07.05, 00:38
  4. der >>operator überladen mit nem objekt
    Von superharry im Forum C/C++
    Antworten: 19
    Letzter Beitrag: 27.01.05, 18:20
  5. Index-Operator [] überladen
    Von jccTeq im Forum .NET Archiv
    Antworten: 6
    Letzter Beitrag: 20.08.04, 11:59