[英]I'm getting this error: error c2064: term does not evaluate to a function taking 0 arguments, but I don't understand why
我遇到此錯誤:錯誤c2064:術語未求值為帶有0個參數的函數。 關鍵是該函數接受0個參數,而我調用0個參數,但我不明白這是怎么回事。
RWLock* rwl = new RWLock();
std::thread t1(&RWLock::read);
那就是對函數的調用。 這是函數:
void read();
有人知道是什么問題嗎? 提前致謝!
所有非靜態成員函數都有一個隱藏參數,該參數成為成員函數中的this
指針。如果要將非靜態成員函數用作線程,則必須在啟動線程時提供此隱藏參數:
std::thread t1(&RWLock::read, rwl);
我很確定, read()
不是靜態函數。 也就是說,您將其聲明為:
void read()
代替:
static void read()
非靜態成員函數始終帶有一個附加參數-隱式this
指針。 將read()
設為靜態,它應該可以工作。
如果read()
不能為靜態,則將附加參數傳遞給std::thread
指向對象的指針,該read()
將繼續工作。 在這種情況下,應該為rwl
:
RWLock* rwl = new RWLock();
std::thread t1(&RWLock::read, rwl);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.