[英]using functions of non-static class functions in C++
我有一個包含多個功能的 class,我希望能夠使用這些功能的功能。 當我嘗試執行類似以下代碼的操作時,我不斷收到編譯器錯誤消息“無效使用非靜態成員函數”。
class MyClass{
protected:
void f(int a, int b);
void g(int num);
void do_something_with_function(int count, void func(int, int));
...
...
};
void MyClass::do_something_with_function(int count, void func(int, int)){
for(int i=0; i<count; i++){
for(int x=0; x<5; x++){
for(int y=0; y<3; y++){
func(x,y);
}
}
}
}
void MyClass::f(int a, int b){
std::cout<<"a="<<a<<", b="<<b<<std::endl;
}
void MyClass::g(int num){
do_something_with_function(num, f);
}
有沒有辦法在不使f
(以及f
依賴的所有函數)static 的情況下使其工作?
是的,您只需要接受指向成員 function 的指針,而不是常規的 function。
將定義更改為:
void MyClass::do_something_with_function(int count,
void (MyClass::*func)(int, int)) {
// ...
func(1, 2); // and use func
}
(當然,聲明也必須更改),並像這樣調用 function:
do_something_with_function(num, &MyClass::f);
這是一個演示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.