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;这个语句重新赋值了。

解决方案 »

  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;
      

  2.   

    this->m_TimeTable.Add(oLoopTrainTbl);
    ??
    为啥要用this->
      

  3.   

    tagTrainStopTime()
    {
    nStopAtCount=0;
    nTrainIdxU=0;
    nTrainIdxD=0;
    arrStopTimesX.SetSize(0);
    arrStopTimes.SetSize(0); };这里,没有对orient赋值?来不及仔细看了,下班赶班车了。。
      

  4.   

    多谢了:)
    是结构体的拷贝构造函数和=重载函数里没有赋值。因为m_TimeTable.Add()函数内部需要用这两个函数。
    我在这两个函数中任意去掉一个都不行。
    另外to xlzxlich(阳光):我在程序里m_TimeTable实际上是类成员,所以用了this->符号,但我发贴的时候忘了说明了。