tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
1452
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Nasenbrecher Nasenbrecher ist offline Rookie
    Registriert seit
    Oct 2004
    Beiträge
    5
    hi,

    ich hab probier seit gestern nen irc client zu proggen...

    hab dazu folgendes gefunden:

    http://www.tutorials.de/forum/showth...96#post1106996

    ich hab das versucht in eine Klasse zu bringen - allerdings kommt beim Compilieren folgender fehler:

    error C2664: '_beginthread' : Konvertierung des Parameters 1 von 'void (void *)' in 'void (__cdecl *)(void *)' nicht moeglich

    meine main sieht wie folgt aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    int main(int argc, char* argv[])
    {
    _beginthread(scon.GetMsg, 0, (void *)scon.GetSock());
    scon.SendMsg();
    std::cin.get();
    WSACleanup();
    return 0;
    }

    die GetMsg-Funktion ist wie folgt implementiert:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    void CIRC::GetMsg(void *m_Sock)
    {
     char ausgabe[1000];
     int x = 0;
     while(1)
     {
      x = recv((SOCKET) m_Sock, ausgabe, sizeof(ausgabe), 0); 
      if(x > 0)
      {
       ausgabe[x] = 0;
       std::cout<< ausgabe << std::endl;
       if (ausgabe[0] == 'P' && ausgabe[1] == 'I' && ausgabe[2] == 'N' && ausgabe[3] == 'G')
        SendPong();
     
      }
      Sleep(10);
     }
    }

    kann mir einer helfen?
     

  2. #2
    Avatar von jokey2
    jokey2 jokey2 ist offline Mitglied Smaragd
    Registriert seit
    Nov 2004
    Beiträge
    1.235
    Ich bin mir zwar nicht ganz sicher, aber ich denke, die Threadfunktion darf keine Memberfunktion einer Klasse sein oder sie muß static sein. Bei CreateThread(...) ist das auf jeden Fall so.
     

  3. #3
    Nasenbrecher Nasenbrecher ist offline Rookie
    Registriert seit
    Oct 2004
    Beiträge
    5
    ja ne... aber dann will der nicht auf meine membervariablen und die anderen funktionen die ich damit aufruf zugreifen

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    [font=Arial]void CIRC::SendPong(void)
    {
     char *Pong  = new char[sizeof(m_Input)];
     std::string PONG;
     strcpy(Pong,m_Output.c_str());
     Pong[1] = 'O';
     PONG = Pong;[/font]
    [font=Arial] send(m_Sock, PONG.c_str(), PONG.length(), 0);
    }[/font]

    ich hab jetzt die anderen funktionen zwar auch static gemacht aber dann kommt solche fehlermeldungen:

    error C2070: ungueltiger sizeof-Operand
    error C2228: Der linke Teil von '.c_str' muss eine Klasse/Struktur/Union sein
    error C2597: Ungueltige Referenz auf ein Datenelement 'CIRC::m_Sock' in einer statischen Member-Funktion
     

  4. #4
    Avatar von jokey2
    jokey2 jokey2 ist offline Mitglied Smaragd
    Registriert seit
    Nov 2004
    Beiträge
    1.235
    Mache eine globale Funktion als Threadfunktion und übergib ihr als Argument einen Zeiger auf das CIRC-Objekt. Dort rufst Du dann die SendMsg-Memberfunktion auf.
     

  5. #5
    Nasenbrecher Nasenbrecher ist offline Rookie
    Registriert seit
    Oct 2004
    Beiträge
    5
    naja habs jetzt anders hingekriegt:

    in der *.h:
    Code :
    1
    
    static void StartThread( void* lpParam );
    in der *.cpp:
    Code :
    1
    2
    3
    4
    5
    
    void CIRC::StartThread( void* lpParam )
    {
      CIRC*  tmpscon = (CIRC*)lpParam;
      tmpscon -> GetMsg();
    }
    in der main:
    Code :
    1
    2
    3
    
    CIRC scon ...
    //bissl Funktionsaufrufe
    _beginthread(scon.StartThread, 0, &scon);

     

Ähnliche Themen

  1. Problem mit _beginthread
    Von colt4ever im Forum C/C++
    Antworten: 11
    Letzter Beitrag: 31.03.10, 08:17
  2. Allegro kennt _beginthread nicht
    Von Windhund im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 13.05.09, 22:01
  3. wie _beginthread, socket abschießen ?
    Von cyberds19 im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 31.07.08, 17:25
  4. Problem mit Funktion
    Von Kein Genie im Forum PHP
    Antworten: 0
    Letzter Beitrag: 30.11.06, 13:16
  5. _beginthread und void*
    Von unmatrix im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 04.10.05, 16:23