我遇到了以下问题。我有一堂课:
class My_Class
{
public:
My_Class(void); // constructor
double * Return_Values(double x, double y); // returns a pointer to the array
}
我还有另一个我想要(并且出于某种原因需要)完全独立于 class 的类My_Class
,但它有一个需要类似于My_Class::Return_Values(double x, double y)
. 所以我决定尝试传递一个函数指针:
class Independent_Class
{
public:
Independent_Class(); // constructor
void Crazy_Method(int a, int b, double * (*FunctionToOperate)(double,double));
}
现在我在代码主体中执行以下操作:
double * (My_Class::*pt2Member)(double,double) = NULL;
pt2Member = &My_Class::Return_Values;
Fields = (My_Class_instance.*pt2Member)(0.0,0.0); // this works perfectly
现在我尝试作弊(是的,我知道函数指针与指向类成员的指针不同,但我仍然尝试过)。
double * (*func)(double,double);
func=pt2Member; // Doesn't work
Independent_Class_instance.Crazy_Method(1,1, &(My_Class_instance.*pt2Member)) //Doesn't work
所以这个想法没有奏效。怎么了?我能以某种方式做我想做的事(保持课程独立)吗?