所以我只想将成员函数作为参数传递给成员函数。显然,这对于函数来说是直截了当的,但是对于成员函数(非静态的),我很难缠头。因此,我想传递此不同类的成员函数。 所以我想要以下内容:
#include <iostream>
#include <vector>
#include <functional>
using namespace std;
class A {
public:
void a(std::string somestring, int (A::*f) (int));
int b(int i);
};
void A::a(std::string somestring, int (A::*f) (int)) {
int i = 20;
std::cout << somestring << " A::a()" << "\n";
std::cout << (this->*f)(i) << "\n";
}
int A::b(int i) {
std::cout << "B::b()" << "\n";
return i+10;
}
class B {
public:
int c(int i);
};
int B::c(int i) {
std::cout << "B::c()" << "\n";
return i+20;
}
int main() {
A objA;
B objB;
objA.a("test",&A::b);
}
这适用于相同的类(A :: a和A :: b),但如何为不同的类(例如B :: c作为A :: a的参数)实现呢?
我不认为这是重复的。我不会调用来自不同类的成员函数。其他问题的答案中没有涉及这些。