Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Und ich schon wieder: Methoden-Pointer und Funktionspointer?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] > 3 <
020
03.06.2007, 20:32 Uhr
FunnyDingo



Leider auch nicht das richtige :-(

Code:
threads/thread.cpp: In static member function 'static void* class_thread::start(void*)':
threads/thread.cpp:65: error: cannot dynamic_cast 'obj' (of type 'void*') to type 'class class_thread*' (source is not a pointer to class)


Hier mal der Code der gesamten class_thread (inkl. des letzten Vorschlags):

C++:
#include <iostream>
#include <pthread.h>
#include "thread.h"
#include "../error/error.h"



class_thread::class_thread()
{
    std::cout << "class_thread::class_thread()" << std::endl;
}



class_thread::~class_thread()
{
    std::cout << "class_thread::~class_thread()" << std::endl;
}



void class_thread::create()
{
    std::cout << "Try to create thread" << std::endl;
    if (pthread_create(&m_handle, NULL, start, this) != 0)
        THROWEXCEPTION("Can't create thread!");

    if (pthread_cond_init(&m_condition, NULL) != 0)
        THROWEXCEPTION("Can't create thread!");

    if (pthread_mutex_init(&m_mutex, NULL) != 0)
        THROWEXCEPTION("Can't create thread!");

    std::cout << "Thread created" << std::endl;
}



void class_thread::wait()
{
    pthread_join(m_handle, NULL);
}



void *class_thread::start(void *obj)
{
    class_thread *tmp = dynamic_cast<class_thread*>(obj);
    if(tmp != NULL)
        tmp->run();
    else
        THROWEXCEPTION("Can't run thread");
    return NULL;
}



void class_thread::run()
{
}

--
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)

Meine Website: http://www.funnydingo.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
03.06.2007, 21:19 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi, für downcasts auf die basis brauchste keinen dynamic_cast.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
03.06.2007, 21:56 Uhr
FunnyDingo



Ich muss ehrlich sagen, dass ich von deiner Aussage nur die Hälfte verstanden habe, daher habe ich nun einfach mal folgendes gemacht:

C++:
class_thread *tmp = (class_thread*)obj;

Es funktioniert, bin mir aber nicht sicher ob es dass ist was du mir mitteilen wolltest.
--
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)

Meine Website: http://www.funnydingo.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
023
04.06.2007, 11:06 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


genau das meinte ich damit, auch wenn ich einen static_cast<...> vorziehen würde.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
024
04.06.2007, 17:55 Uhr
0xdeadbeef
Gott
(Operator)


Eigentlich wär da eher ein reinterpret_cast angebracht:

C++:
class_thread *tmp = reinterpret_cast<class_thread*>(obj);


...dass das mit dynamic_cast auf void* nicht geht, ist da etwas unpraktisch...musst dich halt drauf verlassen, dass dir da keiner Blödsinn reinschmeißt.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
025
10.06.2007, 19:02 Uhr
FunnyDingo



Mit den Unterschiedlichen Casts habe ich mich bisher noch nie beschäftigt (wie mit so vielem, oh oh oh...). Aber ich meine mal irgendwo etwas dazu gefunden zu haben. Dürfte ja nicht schwer sein das wieder zu finden ;-)
--
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)

Meine Website: http://www.funnydingo.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: