我这边有一类
Class CDrvMode

   CDrv1 m_d;
   public DWORD a;
}
我想在另一个类中更新这个类中的a;
这个类是
class CDrv1 : virtual public CExt    
{
}
于是我按照一般的思路首先在CDrv1的头文件中#include "DrvMode.h"
在CDrv1的public中CDrvMode m_drv(或CDrvMode *m_drv);
然后我在cpp文件中想m_drv.a(或m_drv->m_drv).可是他说类没声明呢。
把CDrvMode m_drv(或CDrvMode *m_drv)放到cpp中也是。该如何来调用呢。

解决方案 »

  1.   


    class CExt
    {
    };class CDrvMode

    public: 
    DWORD a;
    };class CDrv1 : virtual public CExt 
    {
    public:
    inline void Init()
    {
    m_cdrv.a = 0;
    }private:
    CDrvMode m_cdrv;
    };
      

  2.   

    把你的类申明在你的DrvMode.h中就可以了
      

  3.   

    inline void Init()
    {
    m_cdrv.a = 0;
    }
    为什么要这样啊。我要在cpp一个函数做了某个操作再给m_cdrv.a赋值啊。
    比如这个函数为int CDrv1 ::eep(
        BOOL   bIsExp
    )
    {    在这里我如何来写呢。
    }
    谢谢
      

  4.   

    CDrvMode中有CDrv1类型的成员变量,CDrv1中有CDrvMode类型的成员变量,楼主为什么这么设计?
      

  5.   

    我只要CDrv1中可以调用改写CDrvMode中的成员变量就可以了
      

  6.   


    class CExt
    {
    };class CDrvMode

    public: 
    DWORD a;
    };class CDrv1 : virtual public CExt 
    {
    public:
    inline void Init()
    {
    m_cdrv.a = 0;
    } int eep(BOOL bIsExp);private:
    CDrvMode m_cdrv;
    };int CDrv1 ::eep(BOOL bIsExp)
    {
    m_cdrv.a = 0;
    return m_cdrv.a;
    }
      

  7.   

    我正在尝试。能说说为什么这样弄吗?不需要调Init()
      

  8.   

    类没有声明应该是说CDrv1类在CDrvMode.h文件中没有声明,在上面加一句:class CDrv1;看看
      

  9.   

    不对啊楼上的还是说missing storage-class or type specifiers,
    现在在Class CDrvMode

    CDrv1 m_d;
    public DWORD a;
    }
    中的CDrv1 也说missing storage-class or type specifiers了。为什么啊。郁闷
      

  10.   

    我只是A类里面要调用B类的函数。B类里面也要调用A类的函数而已。
      

  11.   

    互相包含的情况下,涉及到前向引用的问题。使用指针定义变量吧.然后头文件中class otherclass;
    实现文件中#include "otherclass.h"
      

  12.   

    大哥具体点呢。就拿我那个类来说。Class CDrvMode中调用CDrv1 m_d;是没有问题了。我在CDrv1 中调用
    CDrvMode如何来设置
      

  13.   

    两个类的相互包含吗??
    这个很简单,用类的指针,在H头文件class ClassName;
    在CPP源文件中#include "className.h"就可以了
      

  14.   


    我早就看出楼主是新手,所以我一直在帖代码.楼主用友元,按我说的做
    1. 在.cpp中包含头文件夹
    2. 在.h中用关键字” friend 类名”
    给你来个例子,你按这个例子做,现在有类A和类B,你想相互包含
    “//”是注释的意思
    //a.h
    class a
    {
    friend b
    public:
    int eep(bool bflag);private:
    b 变量;
    }//a.cpp
    #include “b.h”int a::eep(bool bflag)
    {
    变量.i = 你想要的数
    }
    //b.hclass b
    {
    public:
     int i;
    }//b.cpp这下子够明白了吧?我想不出来更简单的方法来诱导你了LZ.