【问题标题】:C++: Pointer to class member function inside a non-related structureC ++:指向非相关结构内的类成员函数的指针
【发布时间】:2009-09-22 23:19:12
【问题描述】:

我已经在网上阅读了一些关于如何解决这个问题的文章,我认为我做得对......我的目标是拥有一个结构对象数组,其中包含指向 a 的成员函数的指针类。

这是我目前所拥有的......

typedef void (foo::*HandlerPtr)(...);
class foo
{
public:
    void someFunc(...);
    // ...
private:
    // ...
};

struct STRUCT
{
    HandlerPtr handler;
};

STRUCT stuff[]
{
    {&foo::someFunc}
};

然后,当使用 (stuff[0].*handler)() 调用函数时,无论有无参数(我确实打算使用参数列表),我得到“处理程序”:未声明的标识符...

我一定错过了什么,只是不知道是什么。

【问题讨论】:

    标签: c++ function-pointers member-functions


    【解决方案1】:

    someFunc() 不是静态方法,因此您需要一个 foo 对象实例才能通过指向方法的变量调用 someFunc(),即:

    foo f;
    f.*(stuff[0].handler)();
    

    或者:

    foo f;
    HandlerPtr mthd = stuff[0].handler;
    f.*mthd();
    

    或者,使用指针:

    foo *f = new foo;
    f->*(stuff[0].handler)();
    delete f;
    

    或者:

    foo *f = new foo;
    HandlerPtr mthd = stuff[0].handler;
    f->*mthd();
    delete f;
    

    【讨论】:

      猜你喜欢
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2018-01-02
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      相关资源
      最近更新 更多