次の問題に遭遇しました。私はクラスを持っています:
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
したがって、そのアイデアは機能しませんでした。なにが問題ですか?どういうわけか私がやりたいことをすることはできますか(クラスを独立した状態に保つ)?