一个应用A,定义了一个类B,new了实例C,然后C中启动了一个线程D,D想引用A中视图类E中一个变量,如何才能办到?
上次有朋友说:可以在创建线程D时传递E的指针给D,
但是这个传递的指针使用前,需要转换成视图E类型的指针,那么就需要类B包含E的头文件E.h,但是E的头文件中已经包含了类B的头文件,这样互相包含,好像编译总是出错,
,如何解决?

解决方案 »

  1.   

    通过app来中转。
    在app里做两个函数,分别设置和获得变量的值。
    视图类复杂设置变量的值,线程里去获得变量的值
      

  2.   

    单文档和多文档稍有不同
    不过大概都是走AfxGetApp()->GetMainWnd(),然后转化为你的frame类指针,
    再GetActiveView
    要是MDI的话还要GetActiveFrame
      

  3.   

    相互包含比较常见,处理手法:A.h中
    -----
    class B;   class A
    {
    B* m_pB;
    };B.h中
    -----
    class A;class B
    {
    A* m_pA;
    };在各自的.cpp文件再包含需要的.h文件
      

  4.   

    你可以通过void*来传指针,在最终使用的地方再转换回来
      

  5.   

    创建线程的时候把这个VIEW指针作为参数传进去就可以了
    CreateThread(....,this,...);ULONG winapi workthread(PVOID lpparam)
    {
        CView *p=(CView*) lpparam;
        ......}
    至于包含,加个#PRAGMA ONCE就ok
      

  6.   

    应该不会互相包含的
    只要在CPP中包含对方的.h文件