2015-12-23 2 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; 
}; 

ошибка: запрос члена «negedge» в «* it.std :: _ List_iterator < _Tp> :: operator-> с _Tp = ClkIf * ', который является неклассовым типом' ClkIf * ' Ошибка в функции отмены, что не так в этом коде?

ответ

0

У вас есть список указателей, поэтому итератор списка будет работать аналогичным образом двойному указателю (то есть ClkIf**). Таким образом, вам нужно будет вызвать (*it)->negedge() внутри цикла. В поле (*it) сначала выбирается элемент ClkIf*, а затем оператор -> вызывает функцию на , что значение.

+0

Работы сейчас, был позором меня – user3831869

Смежные вопросы