Mit problem opstår i min funktion der kører thread'en, SocketFunctions::DataChannelThread - den kører fint, men den vil ikke lade mig caste typen; Dto::ChannelDto channelDto = (Dto::ChannelDto)&lp;
Threaden i sig selv kører fint - det har jeg testet - problemet opstår når jeg prøver at parse ChannelDto-klassen som en parameter til threaden, og skal type-caste den i threaden.
Kan det have noget at gøre med, at jeg skal have en pointer-til-pointer defination, altså noget a'la Dto::ChannelDto **channelDto = (Dto::ChannelDto **)lp; ?
Men det kan den ikke lide - det brokker den sig over..
Det kan være fordi det object du giver med til CreateThread ophører med at eksistere inden du får du udskrevet. Jeg kan ikke se nok context til at vide om det er det der sker.
if (SocketFunctions::DataChannelThreadHandle == NULL) return false; else return true; }
Det er vel ikke så underligt at det bliver nedlagt, når det lokale objekt forsvinder når funktionen ophører - men er det er jo ikke muligt at parse en klasse direkte til en thread, da parameteren er defineret som "void *" - så der er vel ikke andet for end af deklarere Dto'en som et globalt objekt?
Fik løst problemet ved at deklarere det som extern Dto::ChannelDto ChannelData under SocketFunctions - så den metode må jeg leve med - smid et svar, så er der points
Som jeg viste kan du løse det ved at bruge new og delete. Metoden med en global/static kan naturlig vis også virke, i det mindste indtil du får brug for at have to tråde på samme tid ...
Jeg samler ikke på point.
Synes godt om
Ny brugerNybegynder
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.