[英]function pointer for a member function
这个问题可能会有所帮助:
我在课堂上有一个功能
class A
{
void fcn1(double *p, double *hx, int m, int n, void *adata);
void fcn2();
}
在fcn2里面我试图使用指向fcn1的指针,如下所示:
A::fcn2()
{
void (*pfcn1)(double*, double*, int, int, void*) = fcn1;
}
我收到一个错误:
错误C3867:'A :: fcn':函数调用缺少参数列表; 使用'&A :: fcn'创建指向成员的指针
这将是一种帮助的人。
谢谢
改成:
void (A::*pfcn1)(double*, double*, int, int, void*) = &A::fcn1;
考虑使用typedef
来提高可读性:
class A
{
...
typedef void (A::*fcn1_ptr)(double*, double*, int, int, void*);
};
void A::fcn2()
{
fcn1_ptr pfcn1 = &A::fcn1;
}
fcn1()
不是普通函数,而是成员函数。 不能使用普通函数指针来保存它的指针,因为这并不能提供足够的信息:我应该this
设置,当函数被调用来?
您需要使用成员函数指针:
void (A::*pfcn1)(double*, double*, int, int, void*) = &A::fcn1;
如果您有A
类型的对象a
,稍后可以使用以下方法调用它:
(a.*pfcn1)(&somedouble, &somedouble, 42, 69, NULL);
如果你有一个指向类型A
的对象的指针pa
,你可以稍后使用它来调用它:
(pa->*pfcn1)(&somedouble, &somedouble, 42, 69, NULL);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.