Avatar billede tax Nybegynder
10. december 2001 - 10:29 Der er 10 kommentarer og
1 løsning

Tråd i objekt

Jeg har problemer med at starte en medlemsfunktion i en klasse som en tråd. Beginthread kan ikke acceptere funktionspointeren til tråden når den er en af klassens medlemsfunktioner.

Hvad skal den castes til?

fejlen lyder som følger:

E:\\work\\eksamensprojekt\\win32\\AUHWSIM\\com.cpp(28) : error C2664: \'_beginthread\' : cannot convert parameter 1 from \'void (void *)\' to \'void (__cdecl *)(void *)\'
        None of the functions with this name in scope match the target type
Error executing cl.exe.
Avatar billede mickni33 Nybegynder
10. december 2001 - 10:36 #1
din tråd metode modtager en (void*) du sender to parameter til funktionen det vil den ikke godtage.

eller

en tråd funktion skal vist være global altså en fri funktion som alle klasser kan arbejde med

prøv og se om det virker som global så kan du altid lave den til medlem hvis det virker
Avatar billede tax Nybegynder
10. december 2001 - 10:38 #2
Det vil sige at den funktion jeg skal køre som en tråd skal defineres udenfor klassen?
Avatar billede mickni33 Nybegynder
10. december 2001 - 10:43 #3
ja
det gjorde vi, jeg har heller ikke fundet et eksempel på nettet hvor den er defineret i en klasse.
Jeg forsøgte at lave den som friend() af klassen men der gik lidt koks i den da vi var i tidspres
Avatar billede mickni33 Nybegynder
10. december 2001 - 10:45 #4
prøv at lade mig se tråd koden og det kald som kalder funktionen
Avatar billede tax Nybegynder
10. december 2001 - 10:46 #5
#include \"stdafx.h\"
#include \"com.h\"


void comThread(PVOID a);






com::com()
{
    TRACE(\"Com object created.\\n\");
    _beginthread(comThread, 0, (PVOID)0);
   
}


void comThread(PVOID a)
{
    while(1)
    {
        Sleep(1000);
        TRACE(\"*\");
   
    }

}
Avatar billede tax Nybegynder
10. december 2001 - 10:47 #6
Det havde bare været godt hvis tråden var en funktion i objektet for at have adgang til objektets variable.
Avatar billede mickni33 Nybegynder
10. december 2001 - 10:53 #7
Okay det er builderen så kan det godt være det virker med medlems funktion, jeg lavede noget tråd i linux.
du skal nom have pointer * med i funktionen


_beginthread(comThread, 0, (PVOID*)0);
   

er _beginthread en builder funktion eller er det en du har lavet
Avatar billede jpk Nybegynder
10. december 2001 - 10:54 #8
Hvad med at give tråden en pointer med til dit objekt?

Avatar billede tax Nybegynder
10. december 2001 - 10:54 #9
Det må være en builderfunktion. Jeg har ikke defineret den
Avatar billede tax Nybegynder
10. december 2001 - 10:55 #10
Der er lidt på
http://www.geocities.com/SiliconValley/Heights/6038/dthreads.html

Men jeg har ikke grejet det endnu
Avatar billede tax Nybegynder
10. december 2001 - 10:55 #11
jpk: god ide!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester