不存在用户定义的转换

求问Cache_data[index]为啥会出现,不存在用户定义的从“sc_core::sc_in>”到"const sc_dt::sc_uint<32>"的转换

    //将L2地址addr中的新数据加入L1编号为index的路中(L1Miss的话需要L2往里面插入数据)
    void insert_newdata(unsigned int index, unsigned int tag, unsigned int addr)
    {
        int i, j;

        //寻找一组中是否有空位
        for (i = 0; i <= 3; i++)
        {
            if (Cache_data[index].unit[i].valid == false)
            {
                //从L2中读入数据到L1
                ctr_l2_rd_en(index, i, addr);
                Cache_data[index].unit[i].valid = true;
                Cache_data[index].unit[i].tag = tag;
                //更新LRU的值
                update_used(Cache_data[index].lastused, i);
                l1_ctr_data.write(Cache_data[index].unit[i].data);
                return;
            }
        }
        //无空位时需要更新,采用LRU算法找出最近最少使用的数据
        j = not_used(Cache_data[index].lastused);
        //如果原有数据已更改,需要执行写回操作
        if (Cache_data[index].unit[j].changed == true)
        {
            //计算原始地址
            sc_uint<13>add;
            add.range(13, 8) = Cache_data[index].unit[j].tag;
            add.range(7, 2) = index;
            add.range(1, 0) = 0;
            //写回
            write_to_L2 (Cache_data[index].unit[j].data,addr);
        }
        ctr_l2_rd_en(index, j, addr);
        Cache_data[index].unit[j].tag = tag;
        Cache_data[index].unit[j].changed = false;
        update_used(Cache_data[index].lastused, j);

        l1_ctr_data.write(Cache_data[index].unit[j].addr);

        return;

Cache_data是不是出现了嵌套使用?怎么里面又套了一个Cache_data