[英]Is it possible to create a pointer to a non-static member-function in C++?
我想知道是否可以创建和使用指向非静态成员函数的指针。 当我在没有成员函数指针为静态的情况下编译代码时,会出现编译错误。
谢谢...
简而言之:是的,有可能,没有,它没有按照您的想法做。
关键事实是非静态成员函数不是函数(就像花旗松不是冷杉)。 它们是成员函数,而有所不同。 它们只能在给定的对象实例上调用。
因此,为了调用给定实例X a;
的成员函数X::foo()
X a;
,即执行调用a.foo()
,既需要使用X::foo()
,又需要在实例a
上调用它a
。 前者由指针到成员函数提供 ,后者不是指针 ,后者由实例指针或引用提供:
struct X { int foo(bool, char); }; // class definition
X a; // an instance
X * p = &a; // just for demonstration
int (X::*)(bool, char) ptmf = &X::foo; // pointer-to-member-function
现在调用:
(a.*ptmf)(false, 'a');
(p->*ptmp)(true, 'z');
简而言之: foo
本身不能让您调用任何东西。 可调用实体是对 (&X::foo, a)
,可让您调用a.foo()
。
是的,可以在C ++中创建指向成员函数的指针。 查看此常见问题解答: 指向成员的指针
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.