这是我的申请提出的要求。我有一个类 A,它接受一个函数指针,比如 cFunc,基本上在我的 A 实现中,我让它多次调用 cFunc。
cFunc 指针本身应根据应用指向不同的函数。因此,对于每个应用程序,我都创建了一个与 cFunc 具有相同函数定义的类,但是我无法将类的成员函数分配给该指针
class A {
typedef double (*Def_CFunc)(std::vector<double>);
A(Def_CFunc _cFunc) { // Some implementation}
// Other Functions
};
class B { double someFunc(std::vector<double> b); };
class C { double someOtherFunc(std::vector<double> a); };
int main () {
B firstObj;
C secondObj;
// Depending upon the situation, I want to select class B or C
double (*funcPointer)(std::vector<double>) = firstObj.someFunc; // Error in this line of code
A finalObj(funcPointer);
}
那么如何才能使任何具有给定格式成员函数的类都可以用来初始化类 A?
最佳答案
我不确定你的具体要求是什么,但看起来你想要一个 interface (或 C++ 术语中的抽象基类)。
如果 B
和 C
都继承自一个公共(public)基类,您可以传递一个指向该基类的指针并在其上调用函数:
class I { virtual double func(std::vector<double> a) = 0; }
class B : public I { double func(std::vector<double> a); };
class C : public I { double func(std::vector<double> a); };
您可以将 I*
指针传递给 A
并仅使用 i->func
。
关于c++ - 单个函数指针能否指向多个类的成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9545149/