两个线程类A,B,需要分别在对方定义一个类指针,如下:
//a.h
class B;
class A: Public CWinThread
{
  B* m_pPeer;
....
}//b.h
class A;
class B: Public CWinThread
{
  A* m_pPeer;
.......
}我该怎么给m_pPeer赋值?

解决方案 »

  1.   


    (1)   如果B类对象构造时A类对象已存在,就非可以给B类定义一个构造函数:B(A* pA),从而达到初值化m_pPeer的目的。
    (2)  如果上述条件不满足,则可以专门定义一个设置函数:void B::SetPointA(A* pA);
      

  2.   

    我是想这样做:
    A,B两个线程类分别用
    CWinThread *pThreadA=AfxBeginThread(RUNTIME_CLASS(A));
    CWinThread *pThreadB=AfxBeginThread(RUNTIME_CLASS(B));
    起两个线程。
    这两个线程会相互发消息来触发一些操作。
    为此我在A中定义一个B类的指针pB,在B中定义一个A类的指针pA,然后通过pB->PostThreadMessage()和pA->PostThreadMessage()相互发送消息。
    但是我该怎么给pA,pB赋与A,B两个线程类的实例的指针?也就是怎么得到这个指针?
      

  3.   

    AfxBeginThread创建线程使用参数让线程挂起,线程都创建好了再直接
    pTheradA->pB=pThreadB;
    pThreadB->pA=pThreadA;
    然后再Resume这两个线程就行了。你非这么要求,那就这么做吧!