Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
ciao tutti č il mio primo post, per prima cosa complimenti per il sito pieno di guide , ed č propio su una vostra guida che ho dei problemi, quella sui threader.
Vi spiego, sto crivendo forza 4 con le directx9 e adesso devo realizzare l'intelligenza artificiale, per fare questo devo usare i multithreader per evitare che il calcolo delle AI blocchi l'applicazione, allora cercavi di riadattare il vostro esempio inserendo le classi e l'ho scritto cosė:
Codice sorgente - presumibilmente C++
#include <windows.h>
#include <iostream>
#include <stdlib.h>
class Classe
{
public:
DWORD funz1 (LPDWORD lpdwParam);
int main();
};
DWORD Classe::funz1(LPDWORD lpdwParam)
{
Sleep(1000);
for(int i =0;; i++)
{
//adattare i due numeri alla vostra risoluzione
int x = 0 +rand()%1024;
int y = 0 +rand()%768;
SetCursorPos(x, y);
}
return0;
}
int Classe::main(){
DWORD dwThreadId, dwThrdParam =1;
std::cout<<"Ciao, mentre stampo all'infinito i numeri l'altro\\nthread muove a caso il cursore del mouse\\n";
std::cout<<"Ciclo numero "<< i <<" premere CTRL-C per terminare"<< std::endl;
}
return0;
}
uso il c++ e VS2005 quando vado a compilare mi da il seguente errore: c:\documents and settings\andrea1\documenti\file ricevuti\multithread\multithread\multithread.cpp(40) : error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'LPTHREAD_START_ROUTINE'
None of the functions with this name in scope match the target type
Il problema č causato dal fatto che cerchi di inviare alla funzione CreateThread un puntatore a una funzione membro. Il problema č che fino a che non istanzi la classe dall'esterno di essa
Codice sorgente - presumibilmente C/C++
/* Nel codice principale, fuori dalla classe */
Classe istanza = new Classe();
l'indirizzo di funz1 non č definito, il che genera l'errore di compilazione.
Puoi risolvere il problema aggiungendo la parola chiave static nella dichiarazione della funzione:
Codice sorgente - presumibilmente C/C++
class Classe
{
public:
[b]static[/b] DWORD funz1 (LPDWORD lpdwParam);
int main();
};
Questa č la mia teoria e non so se sia giusta, ma sembra funzionare.
Ultima modifica effettuata da pierotofy il 27/05/2006 alle 16:22