0
構造体から関数topTwoに変換されたvoidポインタを渡しています。私はそれをキャストし、構造体からデータを取得しようとすると、代わりにアドレスを取得します。私は間違って何をしていますか? この関数では、localStruct->number
が1を返すようにしようとしていますが、その代わりにアドレスを返しています。ここvoidポインタを構造体に変換するときに値を取得するのに問題がある
void *topTwo(void *p)
{
struct Variables * localStruct;
localStruct= (struct Variables *) p;
cout<<localStruct->number<<endl;
int z = long(localStruct->number);
cout<<z<<endl;
}
ここ
struct Variables{
int largestNum;
int secondLargestNum;
int number;
};
データを渡し、メイン機能である構造体です。
int main()
{
Variables *vars;
vars= new struct Variables();
vars->largestNum=0;
vars->secondLargestNum=0;
vars->number=0;
pthread_t tid[5];
for(int i=0; i<5; i++)
{
vars->number=i;
cout<<vars->number<<endl;
void * sVoid;
sVoid = (void *) &vars;
pthread_create(&tid[i], NULL, topTwo,(void *) sVoid);
pthread_join(tid[i], NULL);
}
}
おかげで、何らかの理由で、私はオフに行っていた例は、の&がそれ – Aaron
でキャストが本当に必要ありません持っています。 –