传递隐式函数指针

时间:2015-09-14 09:24:23

标签: c++ c++98

在某些C ++ 98代码中(意思是没有,使用std::function不是一个选项),我发现了以下构造:

class someClass
{
public:
    typedef void callback();

    void setCallback(callback c)
    {
        mCallback = c;
    }

    void callCallback()
    {
        if (mCallback)
            mCallback();
    }
private:
    callback *mCallback;
};
这让我很困惑。我习惯将回调函数作为函数指针传递,所以我希望setCallback(*callback)()作为参数。

但是,上面的代码似乎有效,并且编译时没有任何(相关的)警告。

有人能告诉我这里发生了什么吗?我的回调函数是否作为函数指针隐式传递?使用它代替函数指针是个好主意吗?

我唯一能找到的是这种结构会导致“parameter-declaration-clause”歧义(C ++ 98 8.3p7)。这是唯一的缺点吗?有什么好处吗?

1 个答案:

答案 0 :(得分:0)

与数组类似,函数类型的参数实际上是一个指向该类型的指针。

相关问题