矢量基派生类

时间:2015-12-23 15:01:06

标签: vector interface stl derived-class base-class

我无法呼叫所有注册时钟的用户的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;
};

错误:请求'* it.std :: _ List_iterator&lt; _Tp&gt; :: operator-&gt;中的成员'negedge'使用_Tp = ClkIf *',它是非类型'ClkIf *' negedge函数出错,这段代码有什么问题?

1 个答案:

答案 0 :(得分:0)

你有一个指针列表,所以列表迭代器可以类似地到双指针(即ClkIf**)。因此,您必须在循环内调用(*it)->negedge()(*it)首先获取当前ClkIf*元素,然后获取 - &gt; operator在 值上调用该函数。