首先类B需要包含类A的头文件,再把A对象的指针传过去就可以了(可以使用函数或其他方法,方法多的是)。但只能使用类A中的公有成员。

解决方案 »

  1.   


    不大明白。
    A类已经定义好了,然后在C类里面创建A的对象a,a中有a1=1,在B类里想调用C类里正在使用的a。
    如果在C类里创建一个A类的指针指向a,用一个公有函数返回该指针。那在B类里要调用这个公有函数,那又需要创建一个C类的对象方可调用,那创建一个新的C类的时候,里面也新创建的A的对象还能是想要的a吗?a1还能等于1吗?
      

  2.   

    如果C类的对象在程序运行时就创建,而且不在任何其他类里面创建的,那只能是在main(不记得MFC的程序入口函数叫什么了)函数里面,貌似这么搞是不是太复杂周折了?
      

  3.   

    类b中保存类a指针,直接通过指针去取a的相关值
      

  4.   


    class CExampleA
    {
    public:
    //构造函数初始化列表
    CExampleA(): m_nData(0),m_dbData(0){}
    CExampleA(int n, double db): m_nData(n),m_dbData(db){}
    ~CExampleA() {} inline void SetDataInt(int n) { m_nData = n; }
    inline int GetDataInt(void) { return m_nData; }
    inline void SetDataDb(double db) { m_dbData = db; }
    inline double GetDataDb(void) { return m_dbData; }
    private:
    int m_nData;
    double m_dbData;
    };class CExampleB
    {
    public:
    //构造函数初始化列表
    CExampleB(): m_pExampleA(NULL){}
    CExampleB(CExampleA *pExampleA): m_pExampleA(pExampleA){}
    ~CExampleB() {} inline void SetExampleA(CExampleA *pExampleA) { m_pExampleA = pExampleA; }
    inline CExampleA* GetExampleA(void) { return m_pExampleA; }
    private:
    CExampleA *m_pExampleA;
    };//使用
    CExampleB b;
    CExampleA a(10,20.5);
    b.SetExampleA(&a);a.SetDataInt(100);
    a.SetDataDb(5.13);