在 C 中,成員函數指標允許我們透過指標像常規函數一樣對待成員函數。但是,必須遵循某些語法規則以避免編譯錯誤。
考慮以下程式碼,我們嘗試使用成員函數指標呼叫cat 類別的walk 成員函數:
class cat { public: void walk() { printf("cat is walking \n"); } }; int main(){ cat bigCat; void (cat::*pcat)(); pcat = &cat::walk; bigCat.*pcat(); }
上面的程式碼無法編譯,並出現錯誤「bigCat.*pcat();語句無法編譯。
成員函數指標使用「.」運算符,而函數呼叫使用普通括號。函數呼叫的優先權高於“”。
要解決此問題,需要額外的括號來覆蓋優先權規則:
(bigCat.*pcat)();
透過此更正,程式碼現在將透過成員函數指標正確地呼叫 walk 函數.
以上是如何在C中使用指標正確呼叫成員函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!