我在sender
類中有startSending過程和一個好友函數(sending
)。我想從一個新線程調用好友功能,所以我在startSending
程序中創建了一個新線程。C++無法將參數'1'轉換爲'void *'爲'void *發送(void *)'
class sender{
public:
void startSending();
friend void* sending (void * callerobj);
}
void sender::startSending(){
pthread_t tSending;
pthread_create(&tSending, NULL, sending(*this), NULL);
pthread_join(tSending, NULL);
}
void* sending (void * callerobj){
}
但我得到這個錯誤
cannot convert ‘sender’ to ‘void*’ for argument ‘1’ to ‘void* sending(void*)’
什麼是調用pthread_create的從發送正確的方法是什麼?
據我記得傳遞給pthread_create的方法應該是靜態的。所以像pthread_create(&tSending,NULL,sender :: sending,NULL);宣佈發送靜態。 – redobot
@redobot不是。它不能是一個非靜態的成員函數,但它當然可以是一個自由函數,就像OP的情況一樣。 – Angew
@Angew我沒有檢查文檔。但是如果他想要使用類方法,那麼應該聲明爲靜態的,如果我沒有錯。 – redobot