gpt4 book ai didi

for循环内的C++变量范围错误

转载 作者:行者123 更新时间:2023-11-27 23:33:09 24 4
gpt4 key购买 nike

//Constructing set of all Places in Conflict with each other
int l_placeVec, l_placeVec1,p;
for(SP_ListListNode::const_iterator iter = m_postTransitionsSet.begin(),l_placeVec=0; iter != m_postTransitionsSet.end(); iter++,l_placeVec++) {
for(SP_ListListNode::const_iterator inneriter = m_postTransitionsSet.begin(),l_placeVec1=0; inneriter != m_postTransitionsSet.end(); inneriter++,l_placeVec1++) {
if((iter != inneriter) && ((**inneriter) == (**iter)) && (((int)((*iter)->size()))>1)) { //when the two lists are same
SP_ListNode* temper = new SP_ListNode;
temper->clear();
for(SP_ListNode::const_iterator iterplaces = m_placeNodes->begin(),p=0; iterplaces != m_placeNodes->end(); iterplaces++,p++) {
if((p == l_placeVec) || (p == l_placeVec1)) {
temper->push_back(*iterplaces);
}
}
m_conflictingPlaces.push_back(temper);
}
}
}

上面的代码是说:“未使用的变量 p”,尽管我在第三个 for 循环中使用了它。如果需要更多信息,请发表评论。

但这是我面临的一些奇怪的事情。

最佳答案

您在内部循环中声明了一个完全不同的变量 p。这里

for(SP_ListNode::const_iterator iterplaces = m_placeNodes->begin(),p=0; ...

以上等同于声明

SP_ListNode::const_iterator p = 0

当然,它隐藏了外部 p。外部 p 仍未使用,这是编译器警告您的内容。

巧合的是,这个内部 p 可以用 0 初始化并且与 int 相当,即使它的类型是 SP_ListNode::const_iterator,这就是你这样做时没有报错的原因。但这只是巧合。

附言只是注意到您对这些外部 int 变量的所有 做了同样的事情,这解释了为什么像 p == l_placeVec 这样的比较不会失败。

关于for循环内的C++变量范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3322969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com