2012-06-05 42 views
1

我正在開發一個arduino項目。對同一類中每個對象的調用方法

對於那些誰不知道Arduino是什麼:

Arduino是一個小的電子板白衣的微控制器,可以在C++

編程由於Arduino是一個小微控制器,它是單核16MHz多處理器非常困難。

我已經作出了類,在第構造函數,它定義了一個引腳作爲PWM輸出連接套分鐘褪色,最大褪色,褪色等時間

我有方法來啓動衰落和停止衰落變化設定值,速度...

for multifading我做了一個更新方法。

所以,當我打電話給light1.update()它檢查是否需要更改pwm輸出。

現在的問題是:

我有更多的LED燈,這將是:

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

是否有寫只有一行到的每個對象上調用update()的方式淡化課程?

回答

6

看起來像你正在尋找組合觀察者模式結合實例管理器模式。

每當您創建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(); 
+0

感謝答覆 但Arduino的/ AVR-GCC沒有類似 任何載體什麼的,這是一個正常的os(linux/unix)的一個很好的解決方案。 – on8tom

+0

我有這樣的想法,但沒有如何使一個變量數組存儲對象,向量可能是唯一正確的方法來做到這一點。 – on8tom

+0

@ on8tom,你可以使用C風格的數組。 –

相關問題