zoukankan      html  css  js  c++  java
  • 使用bind与引用遇到的一个很诡异的bug

    func = bind(&ResourceManager::GetExecutorResourceInfo, this, _1, info);
    VMPoolI::Instance()->MapToDo(func);
    LOG4CPLUS_DEBUG(logger, "in GetMachineInfo vm num:" << info.vm_list.size());

    也就是我MapToDo想把所有的虚拟机信息全部放入info的vm_list中去,在下面的函数中,的确是push进去了,但是回来之后vm_list.size就为0了,这个引用没有起到应用的效果。传入指针好像就好使用了。是不是多个一个MapToDo把引用信息给丢失了?以后还是用指针?

    调用下面的函数:

    void ResourceManager::GetExecutorResourceInfo(const VMPtr& ptr, MachineInfo& info) {
    if(ptr->GetState() == VM_RUN) {
    LOG4CPLUS_DEBUG(logger, "in GetExecutorResourceInfo vm:" << ptr->GetId()
    << " state:" << ptr->GetState());
    info.vm_list.push_back(ptr->GetUsedResource());
    }
    LOG4CPLUS_DEBUG(logger, "in GetExecutorResourceInfo vm num:" << info.vm_list.size());
    }

  • 相关阅读:
    分糖果
    数字游戏
    错误票据
    包子凑数
    带分数
    翻硬币
    核桃的数量
    快速幂
    公倍数与素数筛选
    mysql 查询当天当周当月的数据
  • 原文地址:https://www.cnblogs.com/zhangzhang/p/2987560.html
Copyright © 2011-2022 走看看