簡體   English   中英

我收到此錯誤:錯誤c2064:term不求值為帶有0個參數的函數,但我不明白為什么

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM