gpt4 book ai didi

c++ - 传递隐式函数指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:49:03 24 4
gpt4 key购买 nike

<分区>

在某些 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)() 作为参数。

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

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

我唯一能找到的是这种构造导致“参数声明子句”歧义(C++ 98 8.3p7)。这是唯一的缺点吗?有什么好处吗?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com