Anzeige:
Ergebnis 1 bis 2 von 2

Thema: ost::TCPStream::sync

  1. #1
    Registrierter Benutzer Avatar von Giuly
    Registriert seit
    28.04.2003
    Ort
    HB-Nord
    Beiträge
    201

    ost::TCPStream::sync

    Hallo, ich habe ein Problem mit ost::TCPStream::sync.
    und zwar habe ich eine Klasse COnnection:
    Code:
    class connection : public TCPSession
    //C'Tor
    connection::connection(TCPSocket &serv): 
    TCPSession(serv, 1024, 0)
    {
    }
    und wenn ich jetzt in dieser Klasse
    Code:
    this->sync()
    mache, dann sagt mir der compiler:
    connection.cpp: In member function `void connection::close()':
    connection.cpp:85: error: request for member `sync' is ambiguous
    /usr/include/cc++2/cc++/thread.h:1183: error: candidates are: void ost::Thread::sync()
    /usr/include/cc++2/cc++/socket.h:1637: error: virtual int ost::TCPStream::sync()
    connection.cpp: In member function `bool connection::send(const std::string&)':
    connection.cpp:97: error: request for member `sync' is ambiguous
    /usr/include/cc++2/cc++/thread.h:1183: error: candidates are: void ost::Thread::sync()
    /usr/include/cc++2/cc++/socket.h:1637: error: virtual int ost::TCPStream::sync()
    make: *** [connection.o] Error 1
    Wie mach ich das richtig?
    this->ost::TCPStream::sync(); löst das problem.
    Geändert von Giuly (05-09-2005 um 10:57 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Der Compiler hat recht. TCPSession erbt von zwei Klassen einen gleichlautenden Member. Um die Mehrdeutigkeit aufzuheben, kannst du explizit angeben, welches sync du rufen möchtest.
    Z.b. mit dieser Syntax "this->Basisklass::member...", oder indem du "this" geeignet castest, und sync auf dem Resultat aufrufst. Diese Methoden machen aber nicht immer dasselbe, deshalb solltest du dich noch über die Unterschiede informieren, wenn du Überraschungen aus dem Weg gehen willst. Es sei noch angemerkt, dass es noch mehr Möglichkeiten gibt.

    Wie mach ich das richtig?
    Es wäre gar nicht verkehrt gewesen, wenn du einen Testcase angefertigt hättest. Wenn das zu aufwändig ist, aber zumindest ein Hinweis aus welchem Paket die beteiligten Klassen stammen, das wäre nicht schlecht gewesen. Denn es weiß ja nicht jeder was "ost::TCPStream" ist.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •