有个问题想请教下大家,有没有办法实现不同类中变量的关联?
就是说假如有2个类A和B,A中有个变量a,B中有个变量b,现在我的想法是如何让a和b关联起来,就是a的值和b的值总是相等的。当b的值改动时,a随着改动。
我把b初始化为a的引用或者在类b中一个a类型的指针指向a,在使用过程中都有问题,问下大家该怎么实现呢??谢谢··

解决方案 »

  1.   

    创建引用变量,再复杂就observer模式。
      

  2.   

    B 的b变量引用A a变量即可
      

  3.   

    他们之间该怎么初始化呢?class A
    {
        A();
        CString a;
    }A *pMyClassA;   //这个会被初始化为指向类A的this指针;这里省略。class B
    {
        B();
        CString &b;
        void FucnB();
    }引用初始化
    B::B()
    b(pMyClassA->a)
    {
    }
    编译没问题,但是使用时出问题
    void B::FuncB()
    {
        AfxMessageBox(b);    //这里抛出异常,访问非法
    }
      

  4.   

    B对象构造的时刻pMyClassA指针可能还没有分配空间。
    另外,一般也不要直接写死引用哪个变量,这么做是比较常用的:
    class B
    {
    public:
        B(CString& str);
        ...
    };B::B(CString& str) 
    b(str) 

    }最后定义B对象的时刻,把pMyClassA->a做参数传进去。
      

  5.   

    终于看到 ,偶懂一点的问题了。楼上正解~ 但是!楼主忘了最重要的main函数了~
    如果楼主这样写main函数就没问题了~还是那句,写c的多注意内存~
    void main()
    {
    pMyClassA = new A;
    B obB;
    obB.FuncB;
    }
    不过没有楼上的方法好~
    楼上的main 大体应该是这样
    void main()
    {
    pMyClassA = new A;
    B obB(pMyClassA->a);
    obB.FuncB;
    }
    打完收工
      

  6.   

    是哦!!!!
    构造函数的时候,this指针还没初始化····这都没想到,晕~~