我在某个类中定义了一个结构体:
struct THYTempValue
{
double AValue;
double BValue;
double SubValue;
};
在调用类中引用该类,并定义了一个成员变量:
THYTempValue m_HYValue;
然后在线程中分别给予赋值,发现赋值不成功,然后给其赋予常量,也发现赋不了值,很迷惑,相关代码如下:unsigned long WINAPI TfrmHY250Meter::MeterReadThread(LPVOID Param)
{
    TfrmHY250Meter* frm = (TfrmHY250Meter*)Param;
    if( NULL == frm )
    {
        ExitThread(0);
    }
    frm->m_Active = true;
......
//以下为问题所在,不晓得为什么赋值不了,我该为常量赋值进去也不行,迷惑得很
frm->m_HYValue.AValue = 2.2;
            frm->m_HYValue.BValue = 3.2222;
            frm->m_HYValue.SubValue = 23.3255;
......
    return 0;
}

解决方案 »

  1.   

    是否传递的地址 &m_HYValue 进的线程
      

  2.   

    很可能是入口param不对。
    调试时beginthread/createthread/afxcreatethread时加个断点看参数;是不是你想要线程操作的对象。
      

  3.   

    你是怎么将&m_HYValue赋给Param的
      

  4.   

    回5#,线程中我没有对m_HYValue进行其他操作,纯粹只是赋值,从而得到结构体内的最新数据,然后其他窗体中进行访问。请问我是应该还要重新再里面进行定义吗?
      

  5.   

    创建 MeterReadThread 线程。传递的变量地址是否正确.. basic..
      

  6.   

    在调用线程函数之前,你的m_HYValue是怎么给线程参数的。是传递的地址吗?
      

  7.   

    我在线程中是传值进去的,后来改为传指针进去就可以了,不知道我这样的描述是否正确?
    就是将成员变量由:THYTempValue m_HYValue;
    改为:THYTempValue* m_HYValue;
    这样是可以达到我的目的了,这里还请各位老大给我补下基础,如果还是按先前的定义方式,我如何传地址进去呢?
      

  8.   

    线程的变量是指针啊,你传个值进去,然后取这个值的指针。当然得不到你要的东西了
    定义值的话 THYTempValue m_HYValue;可以传地址进去啊 &m_HYValue