Push_back之前 无值
Push_back之后 pArray的值
Push_back的arrSmallWall 的值 无值
m_curWallPart的值
m_curWallPart的arrSmallWall的值
pArray push_back之后 为什么 nFillSlopeLineNo的值和arrSmallWall的值没压入,而其他值压入了
为什么那么吝惜展示你的代码。不看你的代码天知道你的问题在哪里
bool CZWall::EndSelPart()
{
m_bDrawSelLine = false;
if(m_curWallPart.fEndStat > m_curWallPart.fBeginStat)
{
if(CMMathSys::CompareFloat(m_curWallPart.fBeginStat, m_plRoadbedEdgeLine.begin()->GetX()) < 0)
m_curWallPart.fBeginStat = m_plRoadbedEdgeLine.begin()->GetX();
if(CMMathSys::CompareFloat(m_curWallPart.fEndStat, m_plRoadbedEdgeLine.rbegin()->GetX()) > 0)
m_curWallPart.fEndStat = m_plRoadbedEdgeLine.rbegin()->GetX();
{
double fTempStat = m_curWallPart.fEndStat;
CMPolyline::iterator itRoadbedEdge = m_plRoadbedEdgeLine.FindPoint(m_curWallPart.fBeginStat, 1);
CMPolyline::iterator itSlopeTopBottom = m_plCrestToeLine.FindPoint(m_curWallPart.fBeginStat, 1);
if(itRoadbedEdge != NULL && itSlopeTopBottom != NULL)
{
for(; itRoadbedEdge != m_plRoadbedEdgeLine.end(); itRoadbedEdge++,itSlopeTopBottom++)
{
if(CMMathSys::CompareFloat(itRoadbedEdge->GetY(), itSlopeTopBottom->GetY()) > 0)
{
if(itRoadbedEdge != m_plRoadbedEdgeLine.end()-1 &&
itSlopeTopBottom != m_plCrestToeLine.end()-1 &&
CMMathSys::CompareFloat((itRoadbedEdge+1)->GetY(), (itSlopeTopBottom+1)->GetY()) <= 0)
{
fTempStat = itRoadbedEdge->GetX();
break;
}
}
}
}
m_curWallPart.fEndStat = min(m_curWallPart.fEndStat, fTempStat);
}
std::vector<_WallPart>* pArray = NULL;
if(m_curWallPart.nSide == -1)
{
pArray = &m_arrLWallPart;
}
else if(m_curWallPart.nSide == 1)
{
pArray = &m_arrRWallPart;
}
if(pArray != NULL)
{
for(std::vector<_WallPart>::iterator it = pArray->begin(); it != pArray->end(); it ++)
{
if(CMMathSys::CompareFloat(m_curWallPart.fEndStat, it->fBeginStat) >= 0 &&
CMMathSys::CompareFloat(m_curWallPart.fEndStat, it->fEndStat) <= 0)
{
m_curWallPart.fEndStat = it->fBeginStat;
break;
}
else if(CMMathSys::CompareFloat(m_curWallPart.fBeginStat, it->fBeginStat) <= 0 &&
CMMathSys::CompareFloat(m_curWallPart.fEndStat, it->fEndStat) >= 0)
{
m_curWallPart.fEndStat = it->fBeginStat;
break;
}
}
if(CMMathSys::CompareFloat(m_curWallPart.fEndStat-m_curWallPart.fBeginStat, 0) > 0)
{
if(CreateTopLine(m_nAxesNo, m_curWallPart) &&
ComputeNewToeLine(m_nAxesNo, m_curWallPart) &&
CreateSteps(m_nAxesNo, m_curWallPart))
{
}
m_curWallPart.bIsDeal = true;
pArray->push_back(m_curWallPart);////////////////////////////////
std::sort(pArray->begin(), pArray->end());
m_bModified = true;
m_fActiveStat = (m_curWallPart.fBeginStat+m_curWallPart.fEndStat) * 0.5;
}
else
{
ofl::CreateMessageBox("段落重叠,不能添加这个段落!", "CARD/1", ICMessageBox::MB_ERROR);
}
}
return true;
}
return true;
}
这是其中的代码 只是一个函数 而且里面牵扯太多的变量
bool CZWall::EndSelPart()
{
m_bDrawSelLine = false;
if(m_curWallPart.fEndStat > m_curWallPart.fBeginStat)
{
if(CMMathSys::CompareFloat(m_curWallPart.fBeginStat, m_plRoadbedEdgeLine.begin()->GetX()) < 0)
m_curWallPart.fBeginStat = m_plRoadbedEdgeLine.begin()->GetX();
if(CMMathSys::CompareFloat(m_curWallPart.fEndStat, m_plRoadbedEdgeLine.rbegin()->GetX()) > 0)
m_curWallPart.fEndStat = m_plRoadbedEdgeLine.rbegin()->GetX();
{
double fTempStat = m_curWallPart.fEndStat;
CMPolyline::iterator itRoadbedEdge = m_plRoadbedEdgeLine.FindPoint(m_curWallPart.fBeginStat, 1);
CMPolyline::iterator itSlopeTopBottom = m_plCrestToeLine.FindPoint(m_curWallPart.fBeginStat, 1);
if(itRoadbedEdge != NULL && itSlopeTopBottom != NULL)
{
for(; itRoadbedEdge != m_plRoadbedEdgeLine.end(); itRoadbedEdge++,itSlopeTopBottom++)
{
if(CMMathSys::CompareFloat(itRoadbedEdge->GetY(), itSlopeTopBottom->GetY()) > 0)
{
if(itRoadbedEdge != m_plRoadbedEdgeLine.end()-1 &&
itSlopeTopBottom != m_plCrestToeLine.end()-1 &&
CMMathSys::CompareFloat((itRoadbedEdge+1)->GetY(), (itSlopeTopBottom+1)->GetY()) <= 0)
{
fTempStat = itRoadbedEdge->GetX();
break;
}
}
}
}
m_curWallPart.fEndStat = min(m_curWallPart.fEndStat, fTempStat);
}
std::vector<_WallPart>* pArray = NULL;
if(m_curWallPart.nSide == -1)
{
pArray = &m_arrLWallPart;
}
else if(m_curWallPart.nSide == 1)
{
pArray = &m_arrRWallPart;
}
if(pArray != NULL)
{
for(std::vector<_WallPart>::iterator it = pArray->begin(); it != pArray->end(); it ++)
{
if(CMMathSys::CompareFloat(m_curWallPart.fEndStat, it->fBeginStat) >= 0 &&
CMMathSys::CompareFloat(m_curWallPart.fEndStat, it->fEndStat) <= 0)
{
m_curWallPart.fEndStat = it->fBeginStat;
break;
}
else if(CMMathSys::CompareFloat(m_curWallPart.fBeginStat, it->fBeginStat) <= 0 &&
CMMathSys::CompareFloat(m_curWallPart.fEndStat, it->fEndStat) >= 0)
{
m_curWallPart.fEndStat = it->fBeginStat;
break;
}
}
if(CMMathSys::CompareFloat(m_curWallPart.fEndStat-m_curWallPart.fBeginStat, 0) > 0)
{
if(CreateTopLine(m_nAxesNo, m_curWallPart) &&
ComputeNewToeLine(m_nAxesNo, m_curWallPart) &&
CreateSteps(m_nAxesNo, m_curWallPart))
{
}
m_curWallPart.bIsDeal = true;
pArray->push_back(m_curWallPart);////////////////////////////////
std::sort(pArray->begin(), pArray->end());
m_bModified = true;
m_fActiveStat = (m_curWallPart.fBeginStat+m_curWallPart.fEndStat) * 0.5;
}
else
{
ofl::CreateMessageBox("段落重叠,不能添加这个段落!", "CARD/1", ICMessageBox::MB_ERROR);
}
}
return true;
}
return true;
}
这是其中的代码 只是一个函数 而且里面牵扯太多的变量
push_back里的变量里看看有内容没