2015-12-23 29 views
0

我不能打電話negedge所有誰時鐘註冊用戶,所有的用戶也從ClkIf向量基派生類

class ClkAdapter : public ClkIf 
{ 
    virtual void negedge() 
    { 
     for(std::list<ClkIf*>::iterator it = clk_list.begin(); it != clk_list.end(); it++) 
      (it->negedge)(); 
    } 

    virtual void posedge() 
    { clk_cnt++; } 

    void registerForClock(ClkIf* module) 
    { clk_list.push_back(module); } 

    std::list<ClkIf*> clk_list;   
    unsigned long long clk_cnt; 
}; 

錯誤推導:: _ List_iterator < _Tp> :: operator-> with _Tp = ClkIf *',它是非類類型'ClkIf *' negedge函數中的錯誤,此代碼中出現了什麼錯誤?

回答

0

你有一個指針列表,所以列表迭代器將類似的工作到一個雙指針(即,ClkIf**)。因此,您必須在循環中調用(*it)->negedge()(*it)首先獲取當前的ClkIf*元素,然後 - >運算符調用的函數即的值。

+0

現在工作,是我的可恥 – user3831869