void foo();
class Foomatic() {
void bar();
void baz()
{
std::thread a(foo); // this compiles
std::thread b(Foomatic::bar, this); // this doesn't
std::thread c(&Foomatic::bar, this); // and this compiles
// ...
}
};
我知道成員函數指針的正確語法是&Foomatic::bar
。指向成員函數的指針 - 語法
但是爲什麼Foomatic::bar
不正確?那個人回來了什麼?爲什麼&Foomatic::bar
是正確的?這對我來說似乎是反直覺的。
這不是重複的。您鏈接的問題會回答正確的語法,而不是解釋原因。
我在問爲什麼C++在這裏如此不一致,我已經知道語法是什麼。
@Ed Heal:這不是重複的。我不問,正確的語法是什麼,因爲我知道它是什麼,但是**爲什麼**是正確的語法。答案只是說明正確的語法。 – marmistrz
答案是重複的。語法不正確,因爲語言規範是這樣說的。爲什麼足球比賽長達90分鐘?因爲這就是規則所說的。 –
也許真正的問題是爲什麼'a(foo)'有效,當它應該是'(&foo)'? –