Hes*_*sam 1 c++ static member-function-pointers function-pointers functor
我想在类中定义一个成员函数并使用它的指针.我知道我可以使用静态成员函数,但问题是我只能访问类的静态成员.有没有静态成员函数以外的方法可以获取函数指针.
更具体一点:我正在使用一个库,它将函数指针作为输入.我想编写一个成员函数并将其函数指针指向该外部库.我应该创建类的对象还是使用此指针来执行此操作?
您可以获取方法的指针,但必须使用对象调用它
typedef void (T::*MethodPtr) ();
MethodPtr method = &T::MethodA;
T *obj = new T();
obj->*method();
Run Code Online (Sandbox Code Playgroud)
如果你需要非对象指针并且你想使用对象,那么你必须在某处存储对象的实例,但是你只能使用一个对象(单例).
class T {
static T *instance;
public:
T::T() {
instance = this;
}
static void func() {
instance->doStuff();
}
void doStuff() {}
};
Run Code Online (Sandbox Code Playgroud)
如果库支持函数指针的用户数据,那么您可能有多个实例
class T {
public:
static void func(void *instance) {
((T*)instance)->doStuff();
}
void doStuff() {}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7848 次 |
| 最近记录: |