为什么赋值不上,请大家看看啊,有点复杂,但对我很重要,谢谢了
pDoc->m_Route=this->GetDocument()->GetRouteType(); //双向线路或单向线路
CDLGInputRouteCost *InputCost=new CDLGInputRouteCost()
if(InputCost)
{
BOOL BCreate=InputCost->Create(IDD_DLG_InputRouteCost,this); //输入线路cost
}
InputCost->ShowWindow(SW_SHOW);
m_Route->OnDraw(dc);
m_Route->m_iRelateCityIDOne=pDoc->m_iRelateCityID1;
m_Route->m_iRelateCityIDTwo=pDoc->m_iRelateCityID2;
AidRoute(m_Route);
函数AidRoute代码: 双向线路中包括两个单向线路m_WayCome,m_WayGo void CFindPathDoc::AidRoute(CRoute* Route) //向m_RouteList中添加单向线路。由于我必须添加的是单向线路 {
CBothWayRoute* BothRoute=new CBothWayRoute();
BothRoute=NULL;
if(dynamic_cast<COneWayRoute*>(Route)) //如果为单向线路 {
this->m_RouteList.push_back(Route);
}
if(dynamic_cast<CBothWayRoute*>(Route)) //如果为双向线路 则相当于pushback两个单向线路 {
BothRoute=dynamic_cast<CBothWayRoute*>(Route);
this->m_RouteList.push_back(BothRoute->m_WayCome);
this->m_RouteList.push_back(BothRoute->m_WayGo);
}
}
其中CBothWay类构造函数如下
CBothWayRoute::CBothWayRoute(CPoint ptFirst,CPoint ptSecond,COLORREF Color,int RouteWidth)
{
m_ptFirst=ptFirst;
m_ptSecond=ptSecond;
m_Color_Route=Color;
m_iWidth_Route=RouteWidth;
m_iRouteCost=0;
this->m_WayCome=new COneWayRoute(m_ptFirst,m_ptSecond,m_Color_Route,m_iWidth_Route);
this->m_WayCome->m_iRouteCost=m_iRouteCost;
this->m_WayCome->m_bCriticalPath=m_bCriticalPath;
this->m_WayCome->m_iRelateCityIDOne=m_iRelateCityIDOne;
this->m_WayCome->m_iRelateCityIDTwo=m_iRelateCityIDTwo;
this->m_WayGo=new COneWayRoute(m_ptSecond,m_ptFirst,m_Color_Route,m_iWidth_Route);
this->m_WayCome->m_iRouteCost=m_iRouteCost;
this->m_WayCome->m_bCriticalPath=m_bCriticalPath;
this->m_WayCome->m_iRelateCityIDOne=m_iRelateCityIDTwo;
this->m_WayCome->m_iRelateCityIDTwo=m_iRelateCityIDOne;
}
当线路为单向的时候程序正常,但是线路为双向的时候,bothWay中的m_waycome和m_waygo中的m_iRouteCost,m_iRelateCityIDOne,m_iRelateCityIDTwo不能正确的得到对话框 CDLGInputRouteCost 中赋值的cost,这三个都为0,这是为什么呢