头文件里:
typedef std::list<OneStruct*> ListInfo;
ListInfo m_list;
OneStruct* m_pTemp;CPP里:
void A::Get(void)
{
ListInfo::iterator it = m_list.begin();
while (it != m_list.end())
{
OneStruct* pStruct = *it;
if (pStruct)
{
m_pTemp = pStruct;
}
it++;
}
}void A::Set(void)
{
if (m_pTemp)
{
.........;
}
}在Set中,m_pTemp一直为空,应该是和函数生命周期有关,请问如何能存住呢?

解决方案 »

  1.   

    OneStruct 是结构体吧?? 那么存进去的时候要new出来std::list<OneStruct>  其实你可以直接在栈上存如果是类,实现拷贝构造和复制运算 也可以直接在栈上存  在堆上存要记得自己删除
      

  2.   

    ListInfo 要push_back,插入OneStruct的指针OneStruct* p = new OneStruct();
    //赋值
    ListInfo.push_back(p);
    再调用Get()
      

  3.   

    楼上说的对, 估计是你的m_list没有数据,导致你的get没有进入pTemp的赋值语句
      

  4.   

    还有一个可能性很小的情况,set()先于get()执行了
      

  5.   

    怎么感觉m_pTemp会一直指向m_list.end()?
    m_pTemp = new OneStruct(pStruct);
    这样行不?
      

  6.   

    我在别的地方new过了,有一块没写上来,就是调SET的时候我是POST的消息,当时没想到会是消息的问题,消息过去后this竟然会改变,而且所有的变量都像没有初始化过一样,这是为什么?
      

  7.   

    不知道呢,我发消息给自己
    开始this指针的值比如是0x12312310
    发送消息之后,到Set里,this指针就变成0x12312320啦
    即使初始化一个n=5;到那里也会变成-89....就是没初始化的那个数字