2017-12-09 5 views
0

が、私は方法「リーダー」とクラス「セマフォ」を作成し、この方法:私のmain.cppには"無効な値は無視されません" - 何が間違っていますか?

void semaforo::reader(sem_t x, sem_t y,sem_t z,sem_t rsem,sem_t wsem){ 
    cout<<"----------------"<<endl; 
    cout<<"Leitor esta Lendo"<<endl; 
    sem_wait(&z); 
    sem_wait(&rsem); 
    sem_wait(&x); 
    int aux = readcountM(0); 
    if(aux ==1){ 
     sem_wait(&wsem); 
    } 
    sem_post(&x); 
    sem_post(&rsem); 
    sem_post(&z); 
    prints(1); 
    sem_wait(&x); 
    aux = readcountN(aux); 
    if(aux == 0){ 
     sem_post(&wsem); 
    } 
    sem_post(&x); 
} 

次のように、私はこれらの補助変数を作成し、私のクラスをインスタンス化:

sem_t x,y,z,rsem,wsem; 
pthread_t read[3],write[2]; 

thread *teste2 = new thread(); 

// the following line triggers the error 
teste2->pthread_creation(&read[0],NULL,(void *)teste->reader(x, y, z, rsem, wsem),NULL); 
これにより

は、私は次のエラーを取得する:

void value not ignored as it ought to be

+2

どのラインで正確にエラーが発生しますか? –

答えて

2

あなたの方法「リーダー」はvoidを返します。
無効な戻り値を "pthread_creation"のパラメータとして使用します。あなたが試していると思われるポインタからvoidへのvoidのキャストは、何も変わっていません。

voidを返す場合、メソッドが返す値から値を作成することはできません。
これは、エラー/警告があなたに伝えていることです。

+0

あなたは私に正しい方法を提案できますか?私はC++を新しくしました –

+0

申し訳ありませんあなたに十分なコードを提供していない場合、私はあなたを助けません。また、あなたがしたいことを達成する方法を、別の別の質問にする方法も検討します。新しい質問を作成し、達成したいことを抱いてより多くのコードを表示してください。 – Yunnosch

関連する問題