“虚假价值不应该被忽视,因为它应该是” - 出了什么问题?

时间:2017-12-09 17:11:35

标签: c++ c++11

我用这种方法用“读者”创建了一个“信号量”类:

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);
}

在我的main.cpp中,我创建了这些辅助变量,并按如下方式对我的类进行了实例化:

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);

有了这个,我收到以下错误:

  

空值不被忽略,因为它应该是

1 个答案:

答案 0 :(得分:2)

您的方法&#34;读者&#34;返回无效 您将该无效返回值用作&#34; pthread_creation&#34;的参数。将void转换为指向虚空的指针(你似乎试过)并没有改变任何东西,更不用说它是徒劳的了。

如果返回void,则无法从方法返回的值中创建值 这就是错误/警告告诉你的。