CArray<TRAINSTOPTIMES,TRAINSTOPTIMES> m_TimeTable;
TRAINSTOPTIMES oLoopTrainTbl;
oLoopTrainTbl.arrStopTimes.SetSize(2*nStopCount);
oLoopTrainTbl.arrStopTimesX.SetSize(2*nStopCount);
oLoopTrainTbl.eOrient=oUP;
oLoopTrainTbl.szOrient="UP";
oLoopTrainTbl.nOrient=1;//设置值int型
for(u=0;u<nStopCount;u++)
{
oLoopTrainTbl.arrStopTimesX[2*u]=-1;
oLoopTrainTbl.arrStopTimesX[2*u+1]=-1;
}
this->m_TimeTable.Add(oLoopTrainTbl);
调试时用quick watch窗口:
m_TimeTable.GetAt(0).nOrient -858993460
m_TimeTable.GetSize() 1
我明明已经使用了oLoopTrainTbl.nOrient=1这一语句?为什么会失效?????
在线等,我现在只好暂时用m_TimeTable[m_TimeTable.GetUpperBound()].nOrient=1;这个语句重新赋值了。
TRAINSTOPTIMES oLoopTrainTbl;
oLoopTrainTbl.arrStopTimes.SetSize(2*nStopCount);
oLoopTrainTbl.arrStopTimesX.SetSize(2*nStopCount);
oLoopTrainTbl.eOrient=oUP;
oLoopTrainTbl.szOrient="UP";
oLoopTrainTbl.nOrient=1;//设置值int型
for(u=0;u<nStopCount;u++)
{
oLoopTrainTbl.arrStopTimesX[2*u]=-1;
oLoopTrainTbl.arrStopTimesX[2*u+1]=-1;
}
this->m_TimeTable.Add(oLoopTrainTbl);
调试时用quick watch窗口:
m_TimeTable.GetAt(0).nOrient -858993460
m_TimeTable.GetSize() 1
我明明已经使用了oLoopTrainTbl.nOrient=1这一语句?为什么会失效?????
在线等,我现在只好暂时用m_TimeTable[m_TimeTable.GetUpperBound()].nOrient=1;这个语句重新赋值了。
(另外我用m_TimeTable[m_TimeTable.GetUpperBound()].nOrient=1;这个语句重新赋值后也不管用)
typedef struct tagTrainStopTime//列车在各站的停站时间
{
int nStopAtCount;//经停车站
//CString szTrainIdx;//车次
int nTrainIdxU;//程序内部使用上行车次,从1,3,5计
int nTrainIdxD;
ORIENT eOrient;
CString szOrient;//"UP","DN"
int nOrient;//1--UP,2--DN
CArray<float,float> arrStopTimesX;//存储X坐标即时间
CArray<CString,CString> arrStopTimes;
tagTrainStopTime()
{
nStopAtCount=0;
nTrainIdxU=0;
nTrainIdxD=0;
arrStopTimesX.SetSize(0);
arrStopTimes.SetSize(0); };
tagTrainStopTime(tagTrainStopTime& t)
{
nStopAtCount=t.nStopAtCount;
nTrainIdxU=t.nTrainIdxU;
nTrainIdxD=t.nTrainIdxD;
arrStopTimesX.Copy(t.arrStopTimesX);
arrStopTimes.Copy(t.arrStopTimes);
};
void operator=(tagTrainStopTime& t)
{
nStopAtCount=t.nStopAtCount;
nTrainIdxU=t.nTrainIdxU;
nTrainIdxD=t.nTrainIdxD;
arrStopTimesX.Copy(t.arrStopTimesX);
arrStopTimes.Copy(t.arrStopTimes); }
}TRAINSTOPTIMES;
??
为啥要用this->
{
nStopAtCount=0;
nTrainIdxU=0;
nTrainIdxD=0;
arrStopTimesX.SetSize(0);
arrStopTimes.SetSize(0); };这里,没有对orient赋值?来不及仔细看了,下班赶班车了。。
是结构体的拷贝构造函数和=重载函数里没有赋值。因为m_TimeTable.Add()函数内部需要用这两个函数。
我在这两个函数中任意去掉一个都不行。
另外to xlzxlich(阳光):我在程序里m_TimeTable实际上是类成员,所以用了this->符号,但我发贴的时候忘了说明了。