类成员函数作为函数参数/回调函数 出现error C3867
生活随笔
收集整理的這篇文章主要介紹了
类成员函数作为函数参数/回调函数 出现error C3867
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉自:https://blog.csdn.net/liyunxin_c_language/article/details/83188176
?
類成員函數作為函數參數出現error C3867:非標準語法;請使用“&”來創建指向成員的指針
2018年10月19日 21:17:40?liyunxin_c_language?閱讀數:2097有的時候一個泛函可能會采用函數或函數對象(functor)做參數,這時候我們可能想要使用類的成員函數來做參數,但是這時候會出現error C3867: 非標準語法;請使用 "&" 來創建指向成員的指針,比如下面例子:
?
這時候我們按照提示將t.testFun前面加上&又會出現error C2276: “&”: 綁定成員函數表達式上的非法操作,那么這到底是什么錯誤?
其實這里是因為類的成員函數默認帶有一個this指針參數,那么它作為泛函的參數其實就不匹配了,因為泛函中的Func類型并沒有this指針,所以我們可以把TestC類中的testFun(double x)函數聲明為靜態(static)的,這樣就不帶有this指針;但是靜態的函數又不能訪問非靜態的成員,像這里TestC的testFun函數訪問了非靜態的成員變量a,b,就會出錯,那要怎么辦?這里其實就是相當于泛函中要求單參函數,而使用的是雙參函數,可以自己定義一個適配類,適配雙參函數為單參,如下例:
轉載于:https://www.cnblogs.com/damoying/p/10683244.html
總結
以上是生活随笔為你收集整理的类成员函数作为函数参数/回调函数 出现error C3867的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js如何通过变量调用函数,函数名在变量里
- 下一篇: java的IO机制