对来自同一个类的每个对象调用方法

on8*_*tom 1 c++ oop arduino object

我正在研究一个arduino项目.

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

arduino是一个小型的电子板,可以用C++编程的微控制器

由于arduino是一个小型微控制器,因此单核16MHz多处理非常困难.

我已经创建了一个类,在构造函数中,它将一个引脚定义为pwm输出en set min fade,max fade,fade time等.

我有方法开始淡化并停止淡化变化设定点,速度......

对于多重衰落,我做了一个更新方法.

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

现在的问题是:

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

light1.update();
light2.update();
light3.update();
and so on
Run Code Online (Sandbox Code Playgroud)

有没有办法在fade类的每个对象上只编写一行来调用update()?

Luc*_*ore 6

看起来您正在寻找Observer模式Instance manager模式相结合的组合.

每当您创建新实例时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);
    }
};
Run Code Online (Sandbox Code Playgroud)

然后用以下内容更新所有灯光:

LightManager::notify();
Run Code Online (Sandbox Code Playgroud)