gpt4 book ai didi

c++ - 方法作为回调

转载 作者:行者123 更新时间:2023-11-30 01:25:19 32 4
gpt4 key购买 nike

我已经用接口(interface)实现了我的回调..

struct ICallback
{
virtual bool operator()() const = 0;
};

和添加回调函数

void addCallback(const ICallback* callback) { .... }

并使用,回调在某个类中

class BusImplemantation{
public:
struct Foo : ICallback
{
virtual bool operator()() const { return true;}
}foo;
void OtherMethod();
int OtherMember;
};

但是因为回调是类(不是函数/方法),所以我不能在回调中访问 OtherMethod 和 OtherMember。如果回调不是类,而只是方法,那将是可能的。(内部类与方法)

我无法将 OtherMethod 和 OtherMember 作为参数传递给回调。

有没有更好的解决方案?也许用模板?

最佳答案

使用std::function:

void addCallback(const std::function<bool()>) { .... }

class BusImplemantation{
public:
bool Callback() { return true; }
void OtherMethod();
int OtherMember;
};

BusImplemantation obj;
addCallback(std::bind(&BusImplemantation::Callback, obj));

关于c++ - 方法作为回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12532030/

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