c – 如何调用指针到成员函数?

前端之家收集整理的这篇文章主要介绍了c – 如何调用指针到成员函数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在收到一个我不明白的编译错误(MS VS 2008).在搞砸了很多个小时之后,这些都是模糊的,我觉得有一些非常明显的(非常愚蠢的)我失踪了.这是基本代码
typedef int (C::*PFN)(int);

struct MAP_ENTRY
    {
    int id;
    PFN pfn;
    };

class C
    {
    ...
    int Dispatch(int,int);
    MAP_ENTRY *pMap;
    ...
    };

int C::Dispatch(int id,int val)
    {
    for (MAP_ENTRY *p = pMap; p->id != 0; ++p)
        {
        if (p->id == id)
            return p->pfn(val);  // <--- error here
        }
    return 0;
    }

编译器在箭头声称“术语不评估一个函数采用1个参数”.为什么不? PFN作为一个参数进行原型制作,MAP_ENTRY.pfn是一个PFN.我在这里缺少什么?

解决方法

p> pfn是指针到成员函数类型的指针.为了通过这样一个指针调用一个函数,你需要使用一个运算符 – > *或者操作符*,并提供一个类型为C的对象作为左操作数.你没有

我不知道C中应该使用哪个对象 – 只有你知道 – 但在你的例子中,它可能是*这个.在这种情况下,呼叫可能如下所示

(this->*p->pfn)(val)

为了使它看起来不那么复杂,你可以引入一个中间变量

PFN pfn = p->pfn;
(this->*pfn)(val);
原文链接:https://www.f2er.com/c/113455.html

猜你在找的C&C++相关文章