gpt4 book ai didi

c++ - 在同一个类的每个对象上调用方法

转载 作者:行者123 更新时间:2023-11-30 00:56:06 24 4
gpt4 key购买 nike

我正在做一个 arduino 项目。

对于那些不知道什么是arduino的人:

arduino 是一个带有微 Controller 的小型电子板,可以用 C++ 编程

由于 arduino 是一个小微 Controller ,它是单核 16MHz 多处理非常困难。

我创建了一个类,在构造函数中,它定义了一个引脚作为 pwm 输出并设置了最小淡入淡出、最大淡入淡出、淡入淡出时间等。

我有方法开始衰落和停止衰落改变设定点,速度......

对于多重淡入淡出,我做了一个更新方法。

因此,当我调用 light1.update() 时,它会检查 pwm 输出是否需要更改。

现在的问题是:

我有更多的灯,所以会是:

light1.update();
light2.update();
light3.update();
and so on

有没有办法只写一行来调用淡入淡出类的每个对象的 update()?

最佳答案

看起来您正在寻找观察者模式实例管理器模式的组合。

每当您创建 Light 的新实例时,将其添加到管理器中。当您希望触发事件时,遍历管理器中的实例并调用 update

类似于:

class LightManager
{
static std::vector<Light> lights;
static void notify()
{
for ( size_t i = 0 ; i < lights.size() ; i++ )
lights[i].update();
}
static void add(const light& l)
{
lights.push_back(l);
}
};

class Light
{
Light()
{
LightManager::add(*this);
}
};

然后你更新所有的灯:

LightManager::notify();

关于c++ - 在同一个类的每个对象上调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10903343/

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