读书人

fun().size() == 零 真值的怪异困惑

发布时间: 2012-06-23 14:52:43 作者: rapoo

fun().size() == 0 真值的怪异困惑
typedef map<INT_ELEMID,TBandRule *> typeMapBandRuleForElem;

class TPolicy
{
private:
TPolicyInfo *m_PolicyInfo;
typeMapBandRuleForElem m_mapBandRule;
.....
public:
typeMapBandRuleForElem &mapBandRule(){return m_mapBandRule;}
....
public:
};

情况一:
printf("m_Policy->mapBandRule().size():%d\n",m_Policy->mapBandRule().size());
if(0 == m_Policy->mapBandRule().size())
{
printf("here 0\n");
return ;
//throw 0;
}else{
printf("here 1\n");
}

输出结果是
m_Policy->mapBandRule().size():0
here 0

情况二:
printf("m_Policy->mapBandRule().size():%d\n",m_Policy->mapBandRule().size());
int tmpSize = m_Policy->mapBandRule().size();
if(0 == tmpSize)
{
printf("here 0\n");
return ;
//throw 0;
}else{
printf("here 1\n");
}

输出结果是
m_Policy->mapBandRule().size():0
here 1


请问下两种写法为什么会出现这样区别啊?
为什么第一种情况 if 里面的条件不是true呢?

[解决办法]
情况二:
printf("m_Policy->mapBandRule().size():%d\n",m_Policy->mapBandRule().size());
int tmpSize = m_Policy->mapBandRule().size();

你的map大小确定为0了,

但是这里 tmpSize 没赋到0 ??

[解决办法]
调试跟踪一下吧,中间有些值可能与想的不一样

读书人网 >C++

热点推荐