gpt4 book ai didi

c++ - 在 C++ 中实现回调的最佳方法是什么

转载 作者:太空宇宙 更新时间:2023-11-04 13:46:56 25 4
gpt4 key购买 nike

我有兴趣了解其他人如何设计他们的软件。我在不同的项目中使用了不同的解决方案,但我觉得我可以做得更好。我的实现涉及使用委托(delegate)和观察者,但今天我忍不住问你会如何写。

假设我们有以下内容:

class Sensor
{
...
public:
void sensorTriggered();
};

Class Device
{
...

public:
void notifyChangesFromHardware(unsigned int inNotificationInfo);

protected:
Sensor *fireAlarm_;
};

int main()
{
Device someDevice;
return 0;
}

如果你想调用“Device::notifyChangesFromHardware”,你会如何设计它来自传感器对象 (fireAlarm_)?

谢谢

最佳答案

我会使用函数指针或函数对象:

struct Notifier_Base
{
virtual void notify(void) = 0;
};

class Sensor
{
std::vector<Notifier_Base *> notifiers;
void publish(void)
{
std::vector<Notifier_Base *>::iterator iter;
for (iter = notifiers.begin();
iter != notifiers.end();
++iter)
{
(*iter)->notify();
}
};

参见设计模式:发布者/消费者、发布者/订阅者。

关于c++ - 在 C++ 中实现回调的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25453037/

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