函数指针指向类方法

时间:2014-02-03 13:10:42

标签: c++

我需要一些帮助,在类中使用函数指针指向另一个类方法,但我不知道如何让它能够调用任何类方法。

代码可能非常错误,因为我对它的工作方式感到很困惑,但希望这段代码可以解释我想要做的事情。

#ifndef BUTTON_INPUT_HPP
#define BUTTON_INPUT_HPP

#include"../InputComponent.hpp"

class ButtonInput : public InputComponent {
public:
    template<typename C>
                            ButtonInput(void(C::*f)(), C* object);
    virtual void            update(World& world, GraphicsComponent& graphics, Actor& actor);
private:
    void (C::*func)();
};

#endif

更新功能检查是否单击了按钮,如果是,则应调用func()。

1 个答案:

答案 0 :(得分:1)

这是一个如何将函数指针存储到成员函数以及指向实例的指针的简单示例。稍后可以使用call()调用存储的函数。

#include <iostream>

template<typename C>
class FuncHolder {
public:
    FuncHolder(void (C::*f)(), C* object) : func(f), c(object) {}
    void call() { (c->*func)(); } // Make the call.
private:
    void (C::*func)(); // Pointer to member function.
    C* c;              // Pointer to object.
};

// Example class with member function.
struct Foo {
    void test() { std::cout << "Foo" << std::endl; }
};

int main() {
    Foo foo;
    FuncHolder<Foo> f(&Foo::test, &foo);

    f.call();
}